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);
}
}
执行结果是:
0
in 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 zero
at com.practice.model.Test.testSeq(Test.java:9)
at com.practice.model.Test.main(Test.java:24)
In catch...
In finally....
result = Exception
Java try-catch-finally详解
本文详细解析了Java中try-catch-finally语句的执行流程与特性,特别是finally块无论异常是否发生都会被执行的特点,并通过具体示例展示了不同情况下程序的运行结果。
8610

被折叠的 条评论
为什么被折叠?



