一般来说,在Java的异常处理方法有两种。为什么RuntimeException不需要显式异常处理?
- 添加抛出声明在方法签名
- 环绕与try/catch块。
但是,我注意到一些例外,特别是从RuntimeException
继承的例外,不需要这样的显式异常处理。
例如,我创建了一个示例方法如下,并标明“不需要”对于不要求明确的异常处理的人。
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;
}
}
我注意到,从Exception
RuntimeException
继承。
那为什么RuntimeException
并不需要明确陷入被编译,而其他Exceptions
呢?
那些被称为经过和Java中未检查异常。这些已在讨论中多次讨论http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation – 2013-02-21 05:24:35
一个方法不需要在throws子句中声明RuntimeException的任何子类可能在执行该方法期间抛出,但未捕获。 – sudmong 2013-02-21 05:25:22