在C#中嵌套2个try catch语句是不好的做法吗?

JL.*_*JL. 11 c#

以下代码是不好的做法?

 try //Try Overall Operation
      {
           try //Try section 1 of operation
               {

               }
           catch(exception ex)
               {
                    //handle exception code
                    //throw the exception
       }
 catch (exception ex)
      {
          // send soap exception back to SOAP client.
      }
Run Code Online (Sandbox Code Playgroud)

我从程序审查的角度来看,其他开发人员看到直接嵌套的2次尝试可能想知道为什么,但它是完全禁忌,还是现在被接受的练习?

谢谢大家,我同意你们关于重构的所有内容,为子功能创建一个单独的方法,方法变得非常长.我对你们所有人的印象非常深刻......

Ree*_*sey 29

不,我认为这根本不是坏事.

如果你在第一个嵌套的try中做了一些事情,你可以捕获并正确处理,这非常好,特别是如果你在两个处理程序中"捕获"不同类型的异常.

但是,我想说这可能是重构的好机会,并将嵌套部分拆分为单独的方法.通常,当我看到这个时,它表明该方法应该分成更小的方法.然而,这并非总是如此.


Jon*_*s B 5

在我看来,它不一定是.有时您希望在第一次尝试中执行某些代码,即使第二次尝试中的代码失败也是如此.

可能还会补充说,其他人对他们所说的也是正确的.我只是说它不一定总是坏.在一个不要求性能的程序中,你可以随心所欲地做到这一点.