一般来说,在Java中处理异常有两种方式:
例如,我创建了一个下面的示例方法,并标记了“不需要”不需要显式的异常处理。
我注意到
为什么
- 在方法签名中添加throws声明
- 使用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;
}
}
我注意到
RuntimeException
是继承自Exception
的。为什么
RuntimeException
不需要显式捕获即可编译,而其他Exceptions
则需要呢?