java异常

来源:互联网 发布:淘宝网首页砂锅手套 编辑:程序博客网 时间:2024/05/17 01:11

try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
catch 块:用于处理try捕获到的异常。
finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。

测试:当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。被覆盖

package demo;public class He {private static int show() {int a = 0;try {int i=1/0;} catch (Exception e) {return 1;}finally{return 2;}}public static void main(String[] args) {int a=show();System.out.println(a);//测试结果2,catch里的return被finally里的return 被覆盖。}}

链接:http://blog.csdn.net/hguisu/article/details/6155636

在博客:http://blog.csdn.net/yongh701/article/details/50057975中提到:

finally是在return后面表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;

验证:finally是在return后面表达式运算后执行,断点在finally里的return处


0 0
原创粉丝点击