check exception和uncheck exception

uncheck exception非检查型异常,所有继承RuntimeException或者RuntimeException子类的异常都是uncheck exception。

check exception检查型异常,除非检查型异常外的异常都是检查型异常了。check exception需要程序员处理。

两个示例方法如下,分别代表了一个uncheck exception和check exception

uncheck exception:

public static void test2(String param){
System.out.println("in test2");
throw new IllegalArgumentException("抛出参数异常..."+param);
}



check exception:

public static void test1() throws IllegalAccessException {
System.out.println("in test1");
throw new IllegalAccessException("抛出访问异常...");
}


调用的时候:

public static void main(String args[]){
try {
test1();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
test2("aa");
}


执行结果如下:
in test1
java.lang.IllegalAccessException: 抛出访问异常...
at com.xino.study.file.ExceptionTest.test1(ExceptionTest.java:8)
at com.xino.study.file.ExceptionTest.main(ExceptionTest.java:18)in test2

Exception in thread "main" java.lang.IllegalArgumentException: 抛出参数异常...aa
at com.xino.study.file.ExceptionTest.test2(ExceptionTest.java:13)
at com.xino.study.file.ExceptionTest.main(ExceptionTest.java:22)


注意以上代码,在声明函数的时候,check exception需要throws异常出来,而uncheck exception不需要。调用的时候,check exception需要用try{}catch{}显式捕获异常并处理,uncheck exception不需要。

除了以上区别,还有其它区别,当程序执行过程中,遇到uncheck exception,则程序中止,不再执行之后的代码。修改main函数如下:

public static void main(String args[]){
try {
test1();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
test2("aa");
}

执行结果:
in test2
Exception in thread "main" java.lang.IllegalArgumentException: 抛出参数异常...aa
at com.xino.study.file.ExceptionTest.test2(ExceptionTest.java:13)
at com.xino.study.file.ExceptionTest.main(ExceptionTest.java:17)

可以看到test1函数根本没有执行到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值