对检查性异常和非检查性异常的理解

 从开始学习Java,就学习了异常处理,知道异常分为检查性异常和非检查性异常,RuntimeException属于非检查性异常,知道异常的分类。但工作之前没有很多的实际应用,知识书本上课件上的定义,对两种异常的理解并不是很清楚。工作后在实际代码中,逐渐捋顺清楚了,这里记录一下,基础知识就不说了,书上课件上网上资料很丰富,这里只总结对两种异常的理解。
 
1、检查性异常: JAVA编译器强制要求用try{}catch(){}块进行处理,如果不处理则必须在包含可能发生异常的代码的方法上用throws显示地抛出异常,由调用该方法的方法catch捕捉处理异常,否则程序编译不会通过,会有红叉提示。
如:
 
这里必须要用try  catch块将代码包围起来或者throws显式 抛出异常,否则编译不会通过。
 
2、非检查性异常:JAVA编译器可以通过的异常,可以用try{}catch(){}进行处理,处理过后程序可以继续向下执行,也可以不处理,由调用它的方法进行处理。当然,也可以一直不处理,到了最上层,多线程的话线程会终止,单线程的话主程序会终止,也就是说运行时异常如果一直不进行处理,则会起到使程序停止的作用。
如:
 
这里虽然抛出了异常,但只是阻止程序继续运行,并不会编译报错,无需在方法上用throws语句显式抛出异常。
原文地址:https://www.cnblogs.com/bjh1117/p/7125509.html