Using the SystemError and Error events
Error event
If a runtime error occurs, an error structure that describes the
error is created. If the error occurs in the context of a connection to
a remote server then the Error event on the Connection, DataWindow, or
OLE control object is triggered, with the information in the error
structure as arguments.
The error can be handled in this Error event by use of a special
reference argument that allows the error to be ignored. If the error
does not occur in the context described above, or if the error in that
context is not dealt with, then the error structure information is used
to populate the global error variable and the SystemError event on the
Application object is triggered.
SystemError event
In the SystemError event, unexpected error conditions can be dealt
with in a limited way. In general, it is not a good idea to continue
running the application after the SystemError event is triggered.
However, error-handling code can and should be added to this event.
Typically you could use the SystemError event to save data before the
application terminates and to perform last-minute cleanup (such as
closing files or database connections).
Precedence of exception handlers and
events
If you write code in the Error event, then that code is executed
first in the event of a thrown exception.
If the exception is not thrown in any of the described contexts or
the object’s Error event does not handle the exception or you do not
code the Error event, then the exception is handled by any active
exception handlers (CATCH clauses) that are applicable to that type of
exception. Information from the exception class is copied to the global
error variable and the SystemError event on the Application object is
fired only if there are no exception handlers to handle the
exception.
Error handling for new
applications
For new PowerBuilder applications, the recommended approach for
handling errors is to use a try-catch block instead of coding the Error
event on Connection, DataWindow, or OLE control objects. You should
still have a SystemError event coded in your Application object to
handle any uncaught exceptions. The SystemError event essentially
becomes a global exception handler for a PowerBuilder
application.