Suppose you are using exceptions to manage execution in a deeply nested set of conditional statements and loops. You create your own exception class:

class JumpException of Exception

endclass

Then in the code, you create the JumpException object and THROW it if needed:

try

   local j 

   j = new JumpException() 

   // Lots of nested code 

   ... 

   if lItsNoGood 

      throw j // Deep in the code, you want out 

   endif 

   ... 

catch (JumpException e)

   // Do nothing; JumpException is OK 

catch (Exception e)

   // Normal error 

logError(new Date(), e.message) // Record error message 

   // and continue 

endtry

If there is a normal error, the second CATCH block saves it to a log file, using a function you wrote, and execution continues.