Reputation: 1306
In general, there are two ways to handle exceptions in Java.
However, I've noticed that some exceptions, especially the ones that inherit from RuntimeException
, do not require such explicit exception handling.
For example, I created a sample method as below and marked "Not required" for the ones that do not require explicit exception handling.
public void textException(){
int i = (new Random()).nextInt(100);
switch (i){
case 1:
throw new NullPointerException(); //Not required
case 2:
throw new NumberFormatException(); //Not required
case 3:
throw new RuntimeException(); //Not required
case 4:
throw new ClassNotFoundException(); //Required
case 5:
throw new IOException(); //Required
case 6:
throw new Exception(); //Required
default:
return;
}
}
I noticed that RuntimeException
inherits from Exception
.
Why is it that RuntimeException
does not need to be explicitly caught to be compiled whereas other Exceptions
do?
Upvotes: 10
Views: 4075
Reputation: 2824
"If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception." http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
Upvotes: 3
Reputation: 181
For Java, RuntimeException is considered to be system exception, generally, it's not recoverable, so you needn't add throws declaration on the method or use try catch block to handle it. However, Exception is considered to be application exception, it is recoverable.
Upvotes: 1