如何捕获继承类型的Exception

时间:2017-11-29 08:03:20

标签: java exception

    +--------+     +-----+
    | a.b.EA |<----|s.EC |
    +--------+     +-----+
     ^      ^
     |      |
  +------+ +------+
  |x.y.EC| |r.l.EC|
  +------+ +------+


pacakge r.l;
public interface X{
    void f() throws a.b.EA;
}

pacakge r.l;
public class M implements X{
    public void f() throws a.b.EA {
        throw new r.l.EC();
    }
}


package x.y;
import r.l.M;
public static void main(String[] args){
    try {
        new M().f();
    }catch(EC e){ (**)
    }
}

问题是:如何捕获EC完全实例(因为EC说的有关原因的问题 - EC就像Invalid URL )。

M.f()抛出r.l.EC(),我可以抓住r.l.EC。但是,其他实现X可以抛出,例如s.EC,等等。所以,我无法做好准备。在那种情况下该怎么办

1 个答案:

答案 0 :(得分:1)

由于您无法事先知道接口的其他实现可能引发的确切异常类型,您可以尝试捕获您的特定异常,然后是更常见的异常:

public static void main(String[] args){
    try {
        new M().f();
    }
    catch(EC e) {
        // specific error handling
    }
    catch(EA e) {
        // more general error handling
    }
}