Exception Handling in Your Code
Exception Handling in Your Code
In serious code you should handle error situations so that at the very least, the user is informed about the error in your chosen way.
Delphi uses the event handling approach to error handling. Errors are (mostly) treated as exceptions, which cause program
operation to suspend and jump to the nearest exception handler. If you don't have one, this will be the Delphi default handler - it
will report the error and terminate your program.
Often, you will want to handle the error, and continue with your program. For example, you may be trying to display a picture on a
page, but cannot find it. So you might display a placeholder instead. Much like Internet Explorer does.
begin
Try
...
The code we want to execute
...
Except
...
This code gets executed if an exception occurs in the above block
...
end;
end;
We literally try to execute some code, which will run except when an error (exception) occurs. Then the except code will take over.
In our exception block, we can simpl place code to act regardless of the type of error. Or we can do different things depending on
the error. Here, we use the On function to act on the exception type.
The On clause checks against one of a number of Exception classes. The top dog is the Exception class, parent of all exception
classes. This is guaranteed to be activated above. We can pick out of this class the name of the actual exception class name
(EDivByZero) and the message (divide by zero).
except
// IO error
On E : EInOutError do
ShowMessage('IO error : '+E.Message);
// Dibision by zero
On E : EDivByZero do
ShowMessage('Div by zero error : '+E.Message);
// Catch other errors
else
ShowMessage('Unknown error');
end;
Delphi provides an alternative part to the exception wrapper the Finally clause. Instead of being called when an exception occurs,
the finally clause is always called after part or all of the try clause is executed. It allows us to free up allocated memory, or other
such activities. However, it does not trap the error - the next highest exception handling (try) block that we are nested in is located
and executed.
Once you are done debugging the software it is time to relax. Get up out of your modern office furniture and take a nap or go
outside. It is important to take breaks from your work and have fun.
Raising exceptions
We can not only raise exceptions at our own choosing, but we can create Exception classes to manage them. This kind of processing
is somewhat beyond the basics, being more appropriate to large applications, especially those using many large modules. These
modules may generate their own exception types. Here are the most common exception types :