Custom Exceptions in Java

In this lesson, you will learn how to create an exception in Java. 

We already have a number of defined Exception classes, which will be triggered in special conditions.  For example, if an error occurs while working with files, IOException will be thrown. Or, if a number is divided by zero, the ArithmeticException will be thrown.

We can also define our own custom Exception classes. All we have to do is create a new class, name it as we wish, and inherit one of the existing Exception classes, such as Exception.class or RuntimeException.class. Or any other class that is a subclass of these classes.

How to create a custom exception in Java?

See an example of creating a custom Exception class:

public class MyCustomException extends RuntimeException {

  public MyCustomException(String message) {
    super(message);
  }
}

Here we created the MyCustomException class that inherits the RuntimeException. We then defined one constructor that would take the string as a parameter and call the constructor from the superclass, using the super keyword. See more about the super keyword in Java → Keyword super in Java.

We had to define a constructor to pass a meaningful message to it when explicitly throwing an exception.

Example of using a custom exception:

class Test {

  public static void main(String[] args) {
    Test test = new Test();
    try {
      test.reserveSeats(8);
    } catch (MyCustomException e) {
      System.out.println("Exception occurred with message: " + e.getMessage());
    }
  }

  private void reserveSeats(int numberOfSeats) {
    if (numberOfSeats > 5) {
      throw new IllegalArgumentException("No more than 5 seats can be reserved.");
    } else {
      System.out.println("Reservation successful!");
    }
  }
}
Output: Exception occurred with message: No more than 5 seats can be reserved.
 
That was all about how to create an exception in Java. Proceed to the next lesson.
 
Happy Learning!

Leave a Reply

Your email address will not be published. Required fields are marked *