17.10 Exception Handling and the Exception Hierarchy in Java

Exception handling in Java is a fundamental component for building robust and reliable applications. An exception is an event that occurs during the execution of a program, interrupting the normal flow of instructions. When this event happens, it is necessary to have a mechanism that captures and handles this occurrence so that the program can continue operating or terminate in a controlled manner.

Exception Hierarchy in Java

In Java, all exceptions are descendants of the Throwable class. From there, there are two main subclasses: Error and Exception. The Error class is used for serious conditions that an application should not normally attempt to catch, such as JVM (Java Virtual Machine) problems. The Exception class is the one you will want to catch and handle in your program.

Exceptions of type Exception are divided into two categories: checked exceptions (checked exceptions) and unchecked exceptions (unchecked exceptions). The checked ones are those that the compiler requires to be treated or declared in the method signature through the throws clause. Unchecked ones, which include the RuntimeException and Error subclasses, do not need to be explicitly handled or declared.

Good Practices in Exception Handling

Good exception handling is crucial for the reliability and maintainability of the code. Here are some good practices:

  • Use exceptions for exceptional conditions: Exceptions should be used for abnormal or unexpected situations. Do not use them for regular program flow control.
  • Only catch exceptions that you can handle: Don't catch an exception unless you have a clear strategy for handling it. Catching an exception and doing nothing can hide a problem in your code.
  • Avoid catching Throwable or Exception: This may catch more than you expect, including errors that the JVM should handle. Be specific in the exceptions you catch.
  • Use finally or try-with-resources blocks to release resources: Whenever you work with resources that need to be explicitly closed or released (such as database connections or files), use a finally block or the try-with-resources construct to ensure that these resources are released even if an exception occurs.
  • Preserve original exception information: If you catch an exception and throw a new one, be sure to include the original exception as the cause. This helps preserve the original call stack which is invaluable for diagnosing problems.
  • Do not use exceptions to return error codes: Exceptions are for exceptional situations, not for returning method error codes. Use return values ​​or enumerations for this purpose.
  • Document the exceptions thrown by your methods: Use the @throws or @exception tag in Javadoc comments to explain which exceptions can be thrown by a method and under what circumstances.
  • Consider creating your own exception classes: If the standard exceptions do not adequately describe the problem, consider creating your own exception classes. This can provide more clarity when handling errors specific to your application.

Example of Exception Handling


try {
    // Code that can throw an exception
} catch (SpecificException ex) {
    // Code to handle the specific exception
} catch (AnotherException ex) {
    // Code to handle another exception
} finally {
    // Code that will be executed after the try or catch, regardless of whether an exception was thrown or not
}

Additionally, with the introduction of Java 7, try-with-resources simplifies releasing resources:


try (Resource resource = new Resource()) {
    // Work with the resource
} catch (SpecificException ex) {
    // Handle exceptions that may be thrown
}

In summary, effective exception handling and a clear understanding of the exception hierarchy are vital to writing reliable and maintainable Java code. By following good practices and using language resources appropriately, you can ensure that your application behaves predictably in unexpected situations.

Now answer the exercise about the content:

Which of the following statements about exception handling in Java is correct?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Working with File I/O in Java

Next page of the Free Ebook:

113Working with File I/O in Java

6 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text