异常处理尝试catch内部捕获


问题内容

最近,我遇到了一位程序员的代码,其中他在catch中有一条try-catch语句!

请原谅我无法粘贴实际代码,但是他所做的与以下内容类似:

try
{
 //ABC Operation
}
catch (ArgumentException ae)
{
   try
   {
      //XYZ Operation
   }
   catch (IndexOutOfRangeException ioe)
   {
      //Something
   }
}

我个人认为这是我见过的最差的代码!以1到10的比例,您认为我应该多久才能动一下脑子,还是我反应过度?

编辑:他实际上在抓捕中所做的事情,他正在执行一些操作,这些操作在初始尝试失败时可以/应该执行。我的问题是拥有干净的代码和可维护性。将异常从第一个catch委派到其他函数或调用函数可以,但是添加更多可能会或可能不会在第一个catch中抛出异常的代码,我觉得不好。我尝试避免使用多个堆叠的“
if-loop”语句,但我发现这同样不好。


问题答案:

为什么这么糟?在概念上与以下内容没有什么不同:

void TrySomething() {
   try {


   } catch (ArgumentException) {
        HandleTrySomethingFailure();
   }
}

void HandleTrySomethingFailure() {
    try {

    } catch (IndexOutOfRangeException) {

    }
}

在您去那里之前,请给他一个大脑(尝试顶叶,这特别令人反感),您对他说什么呢?您将如何回答谚语“为什么”?

更具有讽刺意味的是,当抖动内联该代码时,它将看起来完全像您的示例。

-Oisin