Java: throw vs throws vs Throwable

throw is a statement that causes an exception to be thrown:

void method(int i) {
    if (i < 0)
        throwCauses the IllegalArgumentException to be thrown. new IllegalArgumentException();



    ...
}

throws is used in method declarations to say that a given exception may be thrown by the method.

void method() throwsSays that this method may throw IOExceptions IOException {



    if (ioError)
        throw new IOException();
    ...
}

Throwable is the root class of all objects that can be thrown. If you want to catch all kinds of throwables you could do

try {
    processRequest();
} catch (ThrowableCatches everything t) {



    log.error("Request error: " + t);
}

(This just for illustrative purposes. Catching Throwable is considered bad practice, but that’s a topic for another article).

Comments