一下是一个自己不知在哪搜到的一个自定义异常的例子,贴出来大家分享,并讨论一下,不是很明白,呵呵
执行结果:
f1前面
f2前面
try的前面
f3前面
f4前面
自定义异常
无论是否发生异常
f2后面
f1后面
欢迎大家踊跃讨论
package exception;
class MyExp extends Exception {
private static final long serialVersionUID = 1L;
MyExp() {
super("自定义异常");
}
}
public class Exp2 {
public void f1(int n) {
System.out.println("f1前面");
f2(n);
System.out.println("f1后面");
}
public void f2(int n) {
System.out.println("f2前面");
try {
System.out.println("try的前面");
f3(n);
System.out.println("try的后面"); // 发生异常时不会输出
} catch (MyExp e) {
System.err.println(e.getMessage());
} finally {
System.out.println("无论是否发生异常");
}
System.out.println("f2后面");
}
public void f3(int n) throws MyExp {
System.out.println("f3前面");
f4(n);
System.out.println("f3后面"); // 发生异常时不会输出
}
public void f4(int n) throws MyExp {
System.out.println("f4前面");
if (n < 0) {
throw new MyExp();
}
System.out.println(n); // 发生异常时不会输出
System.out.println("f4后面"); // 发生异常时不会输出
}
public static void main(String[] args) {
Exp2 exp = new Exp2();
exp.f1(-4);
}
}
执行结果:
f1前面
f2前面
try的前面
f3前面
f4前面
自定义异常
无论是否发生异常
f2后面
f1后面
欢迎大家踊跃讨论