It is not a matter of IF but WHEN things will go wrong in a computer program. Sometimes there are bugs, errors of one form or another. There are also unforeseen use cases. You can never assume a computer program is perfect. Exception-Handling helps us to catch erroneous events and devise means of correcting them. We discuss this topic here since exception-handling can take more code than should be put into the main line of execution. In such cases, a method in an exception-handling class should be called. Exception handling mechanisms allow a program to continue executing, instead of terminating it abruptly, even if an error occurs in the program.
10.4 Handling Exceptions Within a Program Exception Propagation: Searching for a Catch Block
Separating Error Checking from Error Handling
As we see in the CalcAvgTest example, an important difference between Java’s exception handling and more traditional approaches is that error handling can be separated from the normal flow of execution within
a program. The CalcAverage.avgFirstN() method still checks for
the error and it still throws IllegalArgumentException if N does
not satisfy the method’s precondition. But it does not contain code for
handling the exception. The exception-handling code is located in the
CalcAvgTest class.
Thus, the CalcAvgTest program creates a clear separation between
the normal algorithm and the exception-handling code. One advantage of
this design is that the normal algorithm is uncluttered by error-handling
code and, therefore, easier to read.
Another advantage is that the program’s response to errors has been
organized into one central location. By locating the exception handler
in CalcAvgTest.main(), one exception handler can be used to handle other errors of that type. For example, this catch clause could handle
all IllegalArgumentExceptions that get thrown in the program. Its
use of printStackTrace() will identify exactly where the exception
occurred. In fact, because a Java application starts in the main() method, encapsulating all of a program’s executable statements within a single try
block in the main() method will effectively handle all the exceptions that
occur within a program.