当代码抛出许多异常并且句柄相同时,哪个选择更好?

jia*_*afu 3 java exception

当代码抛出许多异常并且句柄相同时,哪个选择更好?

try{
}catch(ExceptionOne e1)
{
someHandle()
}
catch(ExceptionTwo e2){
someHandle()
}
catch(ExceptionThree e3)
{
someHandle()
}
Run Code Online (Sandbox Code Playgroud)

要么

try{
}catch(Exception e1)
{
someHandle()
}
Run Code Online (Sandbox Code Playgroud)

有些书籍在装饰异常时会尝试抓住它,不要尝试cacth所有异常.

哪个更好?

Mar*_*ers 8

第一个更好.第二个捕获所有异常,这可能包括一些您不想捕获的异常.

如果升级到Java 7,则可以使用可以捕获多种类型异常catch块,这是一种更清晰的解决方案.

try {
    // Something that might throw.
}
catch(ExceptionOne | ExceptionTwo | ExceptionThree e) {
    someHandle()
}
Run Code Online (Sandbox Code Playgroud)