Introduction to Exceptions

Imagine a program functioning as a factory. Any defect disrupts the line, much like errors or exceptions, that interrupt the program. Exceptions, or events that disrupt the typical flow provide error details through representative objects in Java.

Java organizes exceptions into a hierarchy. Frequent exceptions include ArithmeticException, IllegalArgumentException, NullPointerException, and IOException. Our program must handle these to ensure smooth execution.

Throwing Exceptions

In Java, we manually throw exceptions using the throw keyword, much like throwing a ball. This practice is useful for pre-empting known errors. There are different types of exceptions, but here is a small example throwing IllegalArgumentException when the provided name is null.

We throw an IllegalArgumentException when name is null, interrupting the program's execution.

Catching Exceptions: try-catch Block

The try-catch block manages exceptions. In the code below, an attempt to access a nonexistent array index triggers an ArrayIndexOutOfBoundsException. Our try-catch block then catches this exception.

Exception Propagation: What Happens If an Exception is Not Caught?

Without a try-catch block, an exception propagates upward through the method stack until a catch block catches it. If none is found, the program crashes and the console throws the error.

Take a look at the example:

The processArray() method throws an ArrayIndexOutOfBoundsException that goes unhandled, resulting in a program crash.

Differences Between RuntimeException and Exception

Java classifies exceptions as either RuntimeExceptions (unchecked) or other Exceptions (checked). Unchecked exceptions, like the IllegalArgumentException that we've seen already, don't require the throws declaration in the function signature. Checked exceptions, however, do require checking at compile time to ensure proper catching or declaration. Here is an example:

Checked exceptions like Exception, require either handling or declaration. Unchecked exceptions do not require a throws declaration.

Lesson Summary and Practice

Great job! We have mastered exceptions in Java, learning to throw and catch exceptions while also understanding unchecked and checked exceptions. Practice these concepts to solidify them. Remember, you develop coding skills through practice. See you in the next lesson!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal