uses class-based exceptions
authorClaus Gittinger <cg@exept.de>
Mon, 31 Mar 2003 19:54:01 +0200
changeset 7150 a1fe0a0313a8
parent 7149 6fe44e7713f0
child 7151 a112bb7a6748
uses class-based exceptions
CompiledCode.st
ExecutableFunction.st
--- a/CompiledCode.st	Mon Mar 31 19:52:01 2003 +0200
+++ b/CompiledCode.st	Mon Mar 31 19:54:01 2003 +0200
@@ -78,32 +78,43 @@
 !CompiledCode class methodsFor:'initialization'!
 
 initialize
-    "create signals raised by various errors"
+    "create signals raised by various errors."
+
+    "uses class-based exceptions now (but remain backward compatible)"
 
     NoByteCodeSignal isNil ifTrue:[
-        NoByteCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        NoByteCodeSignal nameClass:self message:#noByteCodeSignal.
+"/        NoByteCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        NoByteCodeSignal nameClass:self message:#noByteCodeSignal.
+        NoByteCodeSignal := NoByteCodeError.
         NoByteCodeSignal notifierString:'nil byteCode in code-object - not executable'.
 
-        InvalidByteCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        InvalidByteCodeSignal nameClass:self message:#invalidByteCodeSignal.
+"/        InvalidByteCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        InvalidByteCodeSignal nameClass:self message:#invalidByteCodeSignal.
+        InvalidByteCodeSignal := InvalidByteCodeError.
         InvalidByteCodeSignal notifierString:'invalid byteCode in code-object - not executable'.
 
-        InvalidInstructionSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        InvalidInstructionSignal nameClass:self message:#invalidInstructionSignal.
+"/        InvalidInstructionSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        InvalidInstructionSignal nameClass:self message:#invalidInstructionSignal.
+        InvalidInstructionSignal := InvalidInstructionError.
         InvalidInstructionSignal notifierString:'invalid instruction in code-object - not executable'.
 
-        BadLiteralsSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        BadLiteralsSignal nameClass:self message:#badLiteralsSignal.
+"/        BadLiteralsSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        BadLiteralsSignal nameClass:self message:#badLiteralsSignal.
+        BadLiteralsSignal := BadLiteralsError.
         BadLiteralsSignal notifierString:'bad literal table in code-object - should not happen'.
 
-        NonBooleanReceiverSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        NonBooleanReceiverSignal nameClass:self message:#nonBooleanReceiverSignal.
+"/        NonBooleanReceiverSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        NonBooleanReceiverSignal nameClass:self message:#nonBooleanReceiverSignal.
+        NonBooleanReceiverSignal := NonBooleanReceiverError.
         NonBooleanReceiverSignal notifierString:'if/while on non-boolean receiver'.
 
-        ArgumentSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        ArgumentSignal nameClass:self message:#argumentSignal.
+"/        ArgumentSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        ArgumentSignal nameClass:self message:#argumentSignal.
+        ArgumentSignal := ArgumentError.
         ArgumentSignal notifierString:'bad argument(s)'.
+
+"/        WrongNumberOfArgumentsSignal := WrongNumberOfArgumentsError.
+        WrongNumberOfArgumentsError notifierString:'wrong number of argument(s)'.
     ]
 
     "Modified: 22.4.1996 / 16:33:38 / cg"
@@ -154,6 +165,12 @@
     "return the parent-signal of all execution errors"
 
     ^ ExecutionErrorSignal
+!
+
+wongNumberOfArgumentsSignal
+    "return the signal raised when the number of arguments is wrong in a call"
+
+    ^ WrongNumberOfArgumentsError
 ! !
 
 !CompiledCode class methodsFor:'queries'!
@@ -729,10 +746,10 @@
 
 !CompiledCode methodsFor:'error handling'!
 
-badArgumentArray
+badArgumentArray:argsGiven
     "{ Pragma: +optSpace }"
 
-    "this error is triggered, if a non array is passed to 
+    "this error is triggered, if a non-array is passed to 
      #valueWithReceiver:.. type of methods"
 
     ^ ArgumentSignal
@@ -864,7 +881,7 @@
     "Modified: 4.11.1996 / 22:47:14 / cg"
 !
 
-wrongNumberOfArguments:numberGiven
+wrongNumberOfArguments:numArgsGiven
     "{ Pragma: +optSpace }"
 
     "this error is triggered by the VM, if a method is called with a wrong number
@@ -872,10 +889,10 @@
      This only applies to #valueWithReceiverXXX and #perform:withArguments: - sends.
      With a normal send, this error cannot happen."
 
-    ^ ArgumentSignal
+    ^ WrongNumberOfArgumentsError
         raiseRequestWith:self
         errorString:(' - ', self class name ,
-                     ' got ' , numberGiven printString ,
+                     ' got ' , numArgsGiven printString ,
                      ' arg(s) where ' , self numArgs printString , ' expected')
 
     "
@@ -1231,7 +1248,7 @@
             "
              arguments must be either nil or an array
             "
-            ^ self badArgumentArray
+            ^ self badArgumentArray:argArray
         ]
     ].
 
@@ -1691,6 +1708,7 @@
 !CompiledCode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.90 2002-07-24 15:04:14 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.91 2003-03-31 17:54:01 cg Exp $'
 ! !
+
 CompiledCode initialize!
--- a/ExecutableFunction.st	Mon Mar 31 19:52:01 2003 +0200
+++ b/ExecutableFunction.st	Mon Mar 31 19:54:01 2003 +0200
@@ -73,13 +73,17 @@
 initialize
     "create signals raised by various errors"
 
+    "uses class-based exceptions now (but remain backward compatible)"
+
     InvalidCodeSignal isNil ifTrue:[
-        ExecutionErrorSignal := Error newSignalMayProceed:true.
-        ExecutionErrorSignal nameClass:self message:#executionErrorSignal.
+"/        ExecutionErrorSignal := Error newSignalMayProceed:true.
+"/        ExecutionErrorSignal nameClass:self message:#executionErrorSignal.
+        ExecutionErrorSignal := ExecutionError.
         ExecutionErrorSignal notifierString:'execution error'.
 
-        InvalidCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
-        InvalidCodeSignal nameClass:self message:#invalidCodeSignal.
+"/        InvalidCodeSignal := ExecutionErrorSignal newSignalMayProceed:true.
+"/        InvalidCodeSignal nameClass:self message:#invalidCodeSignal.
+        InvalidCodeSignal := InvalidCodeError.
         InvalidCodeSignal notifierString:'invalid code-object - not executable'.
     ]
 
@@ -433,7 +437,7 @@
 !ExecutableFunction class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.47 2003-03-02 20:49:53 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExecutableFunction.st,v 1.48 2003-03-31 17:53:48 cg Exp $'
 ! !
 
 ExecutableFunction initialize!