Java常见问题 try-catch-finally异常处理总结
程序员文章站
2022-07-04 15:10:15
try+catch的处理流程异常体系结构throws关键字此关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。RuntimeExcepion与Exception的区别注意观察如下方法的源码:Integer类: public static int parseInt(String text)throws NumberFormatException此方法抛出了异常, 但是使用时却不需要进行try。。。catch捕获处理。原因:因为NumberFormatException...
try+catch的处理流程
异常体系结构
throws关键字
此关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。
RuntimeExcepion与Exception的区别
注意观察如下方法的源码:
Integer类: public static int parseInt(String text)throws NumberFormatException
此方法抛出了异常, 但是使用时却不需要进行try。。。catch捕获处理。
原因:
因为NumberFormatException并不是Exception的直接子类,而是RuntimeException的子类,只要是RuntimeException的子类,则表示程序在操作的时候可以不必使用try…catch进行处,如果有异常发生,则由JVM进行处理。当然,也可以通过try catch处理。
try-catch-finally 中哪个部分可以省略?
答:catch和finally可以省略其中一个 , catch和finally不能同时省略
注意:格式上允许省略catch块, 但是发生异常时就不会捕获异常了,我们在开发中也不会这样去写代码
try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
执行流程:
- 先计算返回值, 并将返回值存储起来, 等待返回
- 执行finally代码块
- 将之前存储的返回值, 返回出去;
需注意:
- 返回值是在finally运算之前就确定了,并且缓存了,不管finally对该值做任何的改变,返回的值都不会改变
- finally代码中不建议包含return,因为程序会在上述的流程中提前退出,也就是说返回的值不是try或catch中的值
-
如果在try或catch中停止了JVM,则finally不会执行.例如停电- -, 或通过如下代码退出
JVM:System.exit(0);
在try中return 引用类型 ,finally中改变引用的属性,结果改变成功,备份的是变量的地址
在try中return 基本类型 ,finally中改变基本类型的值,结果改变失败,备份的是变量值
异常中有System.exit(0) == jvm退出内存,finally不会执行
本文地址:https://blog.csdn.net/qq_43206800/article/details/108257100
下一篇: 美流行大脑训练延缓老年痴呆