Start learning free

LESSON 609 OF 635 · OBJECT-ORIENTED PROGRAMMING

Errors and Exceptions in Java in Java

Lesson

TL ; DR:

When a method can't do what it was asked, it throws an exception. The code that called it catches the exception with try and catch.


public void spend(int amount) {
    if (amount > money) {
        throw new IllegalArgumentException("not enough money");
    }

    money -= amount;
}

try {
    wallet.spend(80);
} catch (IllegalArgumentException e) {
    System.out.println("error: " + e.getMessage());
}


Full lesson:

Some requests can't be done. A wallet with 50 can't spend 80.

The method could return a special value, like -1. But the caller may forget to check it. Then the program goes on with a wrong number.

An exception is better. It is an error that the program can't miss.

Throwing an exception

  • throw new IllegalArgumentException("not enough money") stops the method at once.
  • The lines after it don't run. So the wallet keeps its money.
  • IllegalArgumentException is Java's built-in exception for a bad argument.
  • The text in the parentheses is the exception's message.
  • Some exceptions must be listed after throws in the method's header. This one doesn't need that.

Catching it

  • Put the call inside a try block.
  • When the call throws, the rest of the try block is skipped.
  • The catch block for that exception runs instead. e is the exception.
  • e.getMessage() returns its message.
  • Then the program goes on below the catch block.

An exception that nobody catches stops the whole program. Java prints it and the line where it happened.


Your task

A Wallet starts with 50. Its spend method takes money out and returns what is left.

  • In spend, throw an IllegalArgumentException when amount is more than money. Its message is "not enough money".
  • In the loop, call spend inside a try block. Print what was spent and what is left.
  • Catch the exception. Print error: and its message.

The loop tries to spend 20, then 40, then 30.

Expected output:

spent 20, 30 left
error: not enough money
spent 30, 0 left
STEP 1 OF 3
    Ctrl + Enter to check

    Raising Errors in Java

    Keep going with Java500+ step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free