在Try块中,为多个异常创建一个Catch还是为每个异常创建一个Catch更好?

时间:2016-02-12 15:32:10

标签: java exception-handling

我很好奇哪一个更实用,哪些情况我们需要使用第一个以及我们需要使用第二个?例如在Java7中:

first.java

try {
  /* some code that throws these exceptions */
} catch (NoSuchAuthorityCodeException e) {
    throw new MyAPIException("Something went wrong", e);
} catch (FactoryException e) {
    throw new MyAPIException("Something went wrong", e);
} catch (MismatchedDimensionException e) {
    throw new MyAPIException("Something went wrong", e);
} catch (TransformException e) {
    throw new MyAPIException("Something went wrong", e);
}

second.java

try {
  /* some code that throws these exceptions */
} catch (NoSuchAuthorityCodeException | FactoryException| MismatchedDimensionException | TransformException e) {
    /*handle all exceptions*/;
}

2 个答案:

答案 0 :(得分:4)

您需要以不同方式处理每个异常吗?如果是,请使用具有不同行为的不同catch块。如果你想以相同的方式处理所有异常,一个catch块就可以了。

答案 1 :(得分:1)

TangledUpInBlue完美回答,如果只需要以不同方式处理它并希望对不同类型的操作采取不同的操作,请使用单独的捕获。

否则使用父类Exception,一个用于所有:

try{

}
catch(Exception e){

}