Objects for exception handling support
Several system objects support exception handling within PowerBuilder.
Throwable object type
The object type Throwable is the root
datatype for all user-defined exception and system error types.
Two other system object types, RuntimeError and Exception, derive
from Throwable.
RuntimeError and its descendants
PowerBuilder runtime errors are represented in the RuntimeError object
type. For more robust error-handling capabilities, the RuntimeError
type has its own system-defined descendants; but the RuntimeError
type contains all information required for dealing with PowerBuilder
runtime errors.
One of the descendants of RuntimeError is the NullObjectError
type that is thrown by the system whenever a null object reference
is encountered. This allows you to handle null-object-reference
errors explicitly without having to differentiate them from other
runtime errors that might occur.
Error types that derive from RuntimeError are typically used
by the system to indicate runtime errors. RuntimeErrors can be caught
in a try-catch block, but it is not necessary to declare where such
an error condition might occur. (PowerBuilder does that for you,
since a system error can happen anywhere anytime the application
is running.) It is also not a requirement to catch these types of
errors.
Exception object type
The system object Exception also derives
from Throwable and is typically used as an ancestor object for user-defined
exception types. It is the root class for all checked exceptions. Checked
exceptions are user-defined exceptions that must be
caught in a try-catch block when thrown, or that must be declared in
the prototype of a method when thrown outside of a try-catch block.
The PowerScript compiler checks the local syntax where you
throw checked exceptions to make sure you either declare or catch
these exception types. Descendants of RuntimeError are not checked
by the compiler, even if they are user defined or if they are thrown
in a script rather than by the runtime system.