1、所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类
不可以在不声明的情况下抛出非RuntimeException
比如,假设自己定义了个MyException
public String getFirstTwo(String src){
//if(src == null) throw new MyException( "String is null ");
return src.substring(0, 2);
}
注释的语句不放开,不会出错
如果别的地方调用了getFirstTwo(null),在getFirstTwo方法中,null.substring(0,2)方法是会抛出运行时异常
NullPointerException的,虽然getFirstTwo方法并没有申明会throws NullPointerException,但是实际运行中这个
异常还是会从getFirstTwo方法抛出给调用这个方法的地方。而如果把注释语句放开,则无法通过编译,
MyException是一个非运行时异常,如果方法中的语句可能抛出这个异常必须将方法声明为public String
getFirstTwo(String src) throws MyException才可以。
|--Error
Throwable <-| |--RuntimeException
|--Exception <-|
|--Misc.Exception
Error和RuntimeException是非检查型异常,其他的都是检查型异常。
checked exception :方法只抛出它自己声明要抛出的异常。
简单的说,非RuntimeException要自己写catch块处理掉。
联系客服