2016-02-12 25 views
1

我很好奇哪一个更实用,哪些情况下我们需要使用第一个,哪些需要使用第二个?例如,在Java7:在Try块中,为多个异常创建一个Catch还是为每个异常创建一个Catch更好?

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*/; 
} 
+3

这要看情况。你是否希望每个错误都发生同样的事情,还是每个错误都需要一个特定的错误? –

+1

@Mena他们都可以被命名为'e',在这种情况下这不是问题。 – JonK

回答

4

你需要不同的方式处理每一个例外?如果是,则有不同行为的catch块。如果你想以同样的方式处理所有的异常,一个catch块就可以了。

1

完全由TangledUpInBlue回答,如果只有你需要以不同的方式处理它,并且需要对不同类型的动作采取不同的行动,请使用单独的捕获。

否则使用父类Exception,我为人人:你想如何处理每个错误

try{ 

} 
catch(Exception e){ 

}