1 //: Inheriting.java
2 package cn.skyfffire;
3 /**
4 * 自定义异常
5 *
6 * user: skyfffire
7 * time: 下午4:04:58
8 */
9 class MyException extends Exception {
10 private static final long
11 serialVersionUID = -7818673878626777238L;
12 public MyException(){}
13
14 public MyException(String msg) {
15 super(msg);
16 }
17 }
18
19 public class Inheriting {
20 // 方法f选择不带参数的构造器初始化自定义异常
21 public static void f() throws MyException {
22 System.err.println("Throwing MyException from f():");
23
24 throw new MyException();
25 }
26
27 // 方法g选择带参数的构造器初始化自定义异常, 说明异常来源
28 public static void g() throws MyException {
29 System.err.println("Throwing MyException form g()");
30
31 throw new MyException("Originated in g()");
32 }
33
34 public static void main(String[] args) {
35 try {
36 f();
37 } catch (MyException e) {
38 e.printStackTrace();
39 }
40
41 // MyException是‘可继续异常’
42 // 所以在调用f方法抓住异常时, 也可以在此时再次执行g方法
43 try {
44 g();
45 } catch (MyException e) {
46 e.printStackTrace();
47 }
48 }
49 }
50
51 ///:~