Chapter 10 |
Useful tips
A Java exception is an object that describes an exceptional (that is, an error) condition that has occurred in a piece of code. When an exceptional condition arises, an object representing that exception is created and thrown in the method that caused the error. That method may choose to handle the exception itself, or pass it on. Either way, at some point, the exception is caught and processed.
Exceptions can be generated by the Java run-time system, or they can be manually generated by your code. Exceptions thrown by Java relate to fundamental errors that violate the rules of the Java language or the constraints of the Java execution environment. Manually generated exceptions are typically used to report some error condition to the caller of a method.
Java exception handling is managed via five keywords: try
, catch
, throw
, throws
, and finally
. Briefly, here is how they work. Program statements that we want to monitor for exceptions are contained within a try
block. If an exception occurs within the try
block, it is thrown
. Our code can catch this exception (using catch
) and handle it in some rational manner. System-generated exceptions are automatically thrown by the Java run-time system. To manually throw an exception, we use the keyword throw
. Any exception that is thrown out of a method must be specified as such by a throws
clause. Any code that absolutely must be executed after a try
block completes is put in a finally
block.
The try
block contains the code that is executed in normal circumstances. The catch
block contains the code that is executed in exceptional circumstances. Exception handling separates error-handling code from normal programming tasks, thus making programs easier to read and to modify.
An exception occurs in a method. If we want the exception to be processed by its caller, we should create an exception object and throw it. If we can handle the exception in the method where it occurs, there is no need to throw or use exceptions.
In general, common exceptions that may occur in multiple classes in a project are candidates for exception classes. Simple errors that may occur in individual methods are best handled without throwing exceptions. This can be done by using if
statements to check for errors.
When should we use a try-catch block in the code? Use it when you have to deal with unexpected error conditions. Do not use a try/catch block to deal with simple, expected situations.
Which situations are exceptional and which are expected is sometimes difficult to decide. The point is not to abuse exception handling as a way to deal with a simple logic test.
Chapter 10 |