1 package p1.exception;
2
3 /*
4 * 异常的注意事项:
5 *
6 * 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,
7 * 那么子类的方法只能抛出父类的异常或者该异常的子类。
8 *
9 * 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。
10 *
11 * 简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。
12 *
13 * 注意:如果父类方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try
14 */
15 interface Inter{
16 void function();
17 }
18
19 class D implements Inter{
20 public void function()// throws Exception,
21 }
22
23
24
25 class A extends Exception{
26
27 }
28 class B extends A{
29
30 }
31 class C extends Exception{
32
33 }
34
35 Exception
36 |--A
37 |--B
38 |--C
39
40 class Fu{
41 void show()throws A{
42
43 }
44 }
45
46 class Zi extends Fu{
47 void show()throws B{//可以不抛,可以抛出A和B,不能抛出C
48
49 }
50 }
51
52
53
54 class Fu{
55 void show()throws A{
56
57 }
58 }
59
60 class Test{
61 void method(Fu f) {
62 try {
63 f.show();
64 //有子类但是新抛出的是C异常,下面就处理不了
65 } catch (A e) {
66
67 }
68 }
69 }
70
71 class Zi extends Fu{
72 void show()throws C{
73
74 }
75 }
76
77 public class ExceptionDemo6 {
78
79 public static void main(String[] args) {
80 // TODO Auto-generated method stub
81 Test t = new Test();
82 // t.show(new Fu());
83 t.show(new Zi());
84 }
85
86 }