读书人

try catch finally的施行顺序

发布时间: 2012-12-24 10:43:13 作者: rapoo

try catch finally的执行顺序

1.try catch finally中的finally不管在什么情况之下都会执行,执行的时间是在程序return之前。


2.Java编译器不允许有显示的执行不到的语句块,比如return之后就不可能再有别的语句块(分支不属于此列),所以以下程序编译会报错:

?

package com.practice.model;public class Test {public String testSeq() {String result="end";int i = 0;try {System.out.println(6/i);//System.out.println(i);System.out.println("in try...");return result;} catch (Exception e) {e.printStackTrace();System.out.println("In catch...");return result;} finally {System.out.println("In finally....");//return result;}return result;}public static void main(String[] args){Test test=new Test();String rs=test.testSeq();System.out.println("result = "+rs);}}

?原因是由于try{...}catch{...}块中都已存在return。


3.以下是几个小例子:


1)

package com.practice.model;public class Test {public String testSeq() {String result1="Normal";        String result2="Exception";int i = 0;try {//System.out.println(6/i);System.out.println(i);System.out.println("in try...");return result1;} catch (Exception e) {e.printStackTrace();System.out.println("In catch...");return result2;} finally {System.out.println("In finally....");}}public static void main(String[] args){Test test=new Test();String rs=test.testSeq();System.out.println("result = "+rs);}}

?

执行结果是:

0in try...In finally....result = Normal
?

?

?

2)

package com.practice.model;public class Test {public String testSeq() {String result1="Normal";        String result2="Exception";int i = 0;try {System.out.println(6/i);//System.out.println(i);System.out.println("in try...");return result1;} catch (Exception e) {e.printStackTrace();System.out.println("In catch...");return result2;} finally {System.out.println("In finally....");}}public static void main(String[] args){Test test=new Test();String rs=test.testSeq();System.out.println("result = "+rs);}}

?

执行结果是:

java.lang.ArithmeticException: / by zeroat com.practice.model.Test.testSeq(Test.java:9)at com.practice.model.Test.main(Test.java:24)In catch...In finally....result = Exception
?

?

读书人网 >编程

热点推荐