Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is it not necessary to catch the IllegalArgumentException?

I wonder why the IllegalArgumentException class does not need to be catched or declared, while other exceptions have to (eg java.net.MalformedURLException).

public void foo() {
    throw new IllegalArgumentException("spam");
}

public void bar() throws MalformedURLException { // required
    throw new MalformedURLException("ham");
}

I know that Errors do not have to be declared because they are not intended to be catched.

I'd like to declare a new exception which also does not require to be catched.

like image 856
Niklas R Avatar asked Oct 04 '13 20:10

Niklas R


1 Answers

There are two types of Exceptions in Java: Checked Exceptions and Unchecked Exceptions. Checked exception has to be caught or declared to be thrown (like MalfomedURLException) but catching Unchecked exceptions (like IllegalArgumentException) is not mandatory and you can let the caller catch them (or throw them up to its caller).

For more information, take a look at this post:

Java: Checked vs Unchecked Exceptions Explanation

If you inherit your custom exception class from RuntimeException or any exception class inherited from it, then catching your exception will not be mandatory.

like image 195
zaerymoghaddam Avatar answered Sep 30 '22 20:09

zaerymoghaddam