try,catch,finally执行顺序的测试

来源:互联网 发布:mac隐藏下方菜单栏 编辑:程序博客网 时间:2024/06/03 16:44

Java的异常处理机制,能够帮助解决一些问题,特别是在catch部分捕捉到异常时,事物可以进行回滚(sql的增删改算,查询由于没有对数据进行改变,所以用不上回滚),从而避免了错误的操作,Java的方法的返回值,标志着一个方法的结束,不管是在try,catch,还是在finally里之要出现了return语句,就代表改方法已经结束,但是在Java异常处理机制中,try,catch中即使有return,也会去执行finally中的语句,这就是为什么我们在写异常的时候通常要加上finally。而且,顺带发现return还能返回一个表达式,如下面的例子


public class Test {
public static int test() {

int a=1;
try {

FileInputStream f=new FileInputStream("d://ddddddddd");    //由于这个路径的文件不存在,所以在运行时会出现异常
return a+=10;

} catch (Exception e) {

e.printStackTrace();
return a+=100;
}finally{

return a=a+1000;





}

}
public static void main(String[] args) {
System.out.println(test());


}


}

运行结果为1101,下面的例子是没有异常的

public class Test {
public static int test() {

int a=1;
try {


return a+=10;

} catch (Exception e) {

e.printStackTrace();
return a+=100;
}finally{

return a=a+1000;





}

}
public static void main(String[] args) {
System.out.println(test());


}


}

运行的结果为1011,通过上面的两个例子可以看出来,即使try,catch中有 return,最后还是会执行finally中的语句,如果finally中return语句,还是以finally为准,至于什么原因暂时不清楚。


原创粉丝点击