通常,有两种方法可以处理Java中的异常。
但是,我注意到一些异常,尤其是从RuntimeException
继承的异常,不需要这样的显式异常处理。
例如,我创建了一个如下所示的示例方法,并为那些不需要显式异常处理的方法标记为“Not required”。
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;
}
}
我注意到RuntimeException
继承自Exception
。
为什么RuntimeException
不需要被明确地捕获来编译而其他Exceptions
呢?
答案 0 :(得分:1)
对于Java,RuntimeException被认为是系统异常,通常,它是不可恢复的,因此您不需要在方法上添加throws声明或使用try catch块来处理它。 但是,Exception被认为是应用程序异常,它是可以恢复的。
答案 1 :(得分:1)
"如果可以合理地期望客户端从异常中恢复,请将其作为已检查的异常。如果客户端无法执行任何操作以从异常中恢复,请将其设置为未经检查的异常。" http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html