【Java】异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Francis123580/article/details/82154274

异常体系

这里写图片描述

Throwable :派生类为 Exception 、 Error

Error:虚拟机相关问题(系统崩溃、虚拟机错误、动态链失败 …)

Exception:分为 Checked异常 和 Runtime异常

异常处理机制

1、抛出异常:try块中代码出现异常,系统自动生成一个异常对象,提交给Java运行环境
2、捕获异常:Java运行环境收到异常对象,自动寻找能处理该异常对象的catch块
3、程序退出:Java运行环境出现异常会生成异常对象,找不到catch块则退出程序

处理异常

1、父类异常放在子类异常后面;
2、多种异常可以用 | 分割;
3、try块、catch块、finally块中可以嵌套异常处理,不建议多层嵌套;
4、子类抛出异常应该是父类抛出异常的子类或相同,子类抛出异常少于父类;
5、不要使用过于庞大的try块;
6、尽量精准捕获异常,catchAll难以区分,导致压制关键性异常;

异常执行顺序

1、无论是否出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的,函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值

Ps. 执行finally前有return,此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值

参考:
https://blog.csdn.net/jsjdtb356/article/details/52160763

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/82154274