try中有一个异常语句,后面只跟了一个finally, 返回上一级的时候为什么捕捉不到异常?
package com.imooc;
import javax.xml.transform.TransformerException;
public class TestException {
public TestException() {
}
boolean testEx() throws Exception {
boolean ret = true;
try {
ret = testEx1();
} catch (Exception e) {
System.out.println("testEx, catch exception");
ret = false;
throw e;
} finally {
System.out.println("testEx, finally; return value=" + ret);
return ret;
}
}
boolean testEx1() throws Exception {
boolean ret = true;
try {
ret = testEx2();
System.out.println("ret=="+ret);
//System.out.println("echang=="+e);
if (!ret) {
return false;
}
System.out.println("testEx1, at the end of try");
return ret;
} catch (Exception e) {
System.out.println("testEx1游戏场, catch exception");
ret = false;
throw e;
} finally {
//System.out.println("异常是");
System.out.println("testEx1, finally; return value=" + ret);
return ret;
}
}
boolean testEx2() throws Exception{
boolean ret = true;
try {
int b = 12;
int c;
for (int i = 2; i >= -2; i--) {
c = b / i;
System.out.println("i=" + i);
}
return true;
} /*catch (NullPointerException e) {
System.out.println("testEx2低级异常, catch exception");
ret = false;
//System.out.println("e=="+e);
throw e;
//System.out.println("能不能执行?");
} */finally {
System.out.println("testEx2低级最终要执行, finally; return value=" + ret);
return ret;
}
}
public static void main(String[] args) {
TestException testException1 = new TestException();
try {
testException1.testEx();
} catch (Exception e) {
e.printStackTrace();
}
}
}