4

我一直在考虑这个问题,因为这是可能的,但我想知道它是否被认为是“不好的做法”。我相信是的,但我想征求意见以检查我的意见。

做这样的事情是不是很糟糕:

try{
    something();
    somethingelse();
        try{
            foo();
            bar();
        }catch(Exception e){
            e.printStackTrace();
        }
    somethingelseagain();
}catch(Exception e){
     e.printStackTrace();
}

我认为永远不需要这样做,因为任何引发异常的东西都会触发第一次捕获。

意见不胜感激。

4

3 回答 3

4

在您的示例中,如所写,内部捕获有点多余。

但是,嵌套的 catch 在以下情况下会有更多用处:

  • 捕捉不同的异常

  • 在处理程序块中为两个捕获做不同的事情

  • 内部 catch 可能会捕获异常,执行某些操作,然后重新抛出 out catch 块可以捕获的相同异常

此外,不要忘记该finally块的潜在用途,即使捕获到异常,它也可以执行清理代码。

您通常应该尽可能地捕获最显式类型(即特定)的异常。

例外的主题是一个有趣的主题,而且并非没有争议

于 2012-11-22T21:49:02.390 回答
1

我认为您可能想要嵌套 try 语句的一种情况是,如果您在 catch 中请求用户输入并且该输入可能无效。

于 2012-11-22T21:46:50.053 回答
0

当情况需要时,嵌套try-catch是完全合理的。try例如,如果某个方法抛出某个异常,您不想跳过任何步骤并跳出主程序。如果它抛出任何其他异常,那么你想要正常的行为。

于 2012-11-22T22:11:27.337 回答