Writing a stack dump exception routine
There are cases when you might not want to receive a stack dump. VA Smalltalk Server provides a method which allows you to ignore an error condition and perform your own exception routine. This method also allows you to produce a stack dump at your discretion. 
The whenExceptionDo: method permits you to write a block of code that suspends normal processing for your own exception routine. In this block, you can choose to produce a stack dump and exit the server application without returning to Smalltalk processing. 
The method is used by specifying a block of code, which can be your application launch code, then a block of code that performs your exception routine. For example, the following doit method launches a server application and, if that launch fails, produces a stack dump and exits the image without allowing Smalltalk to regain control. 
doit
 
  | startUpClass dumperClass |
 
  [MyClass run]
    whenExceptionDo: [
      startUpClass := System startUpClass.
      (startUpClass respondsTo: #stackDumperClass)
        ifTrue: [dumperClass := startUpClass stackDumperClass].
      Transcript cr;
  	show: 'startUpClass=',startUpClass printString;
  	cr;
	show: 'dumperClass=',dumperClass printString;
	cr; flush.
 
    "Test for a dumper class before dumping the stack"		 
      (dumperClass isNil) ifFalse: [
        Transcript show: 'dumping Stack ...... '; cr; flush.
        dumperClass dumpStack: 'This is the Stack Dump Message'].
       
      Transcript show: 'explicit return to CICS prevents exception abend';
        cr; flush.
      System exit]
You can also use the method System exit:withObject: to exit with a user return code. If you are running under CICS, you must use CICS return exec to exit the image without allowing Smalltalk to regain control. 
Last modified date: 05/10/2019