C# 是否可以尝试包装多余的代码?

C# 是否可以尝试包装多余的代码?,c#,C#,我正在看一些我正在重构的代码,并注意到尝试。。。catch代码包装了相当多的代码,不是所有会抛出“正常”异常的代码,也就是说,代码根本不会抛出异常,或者如果它抛出异常,那么它将是完全致命的异常,比如内存不足异常 我现在想知道的是,在try语句中包装太多是否会导致性能问题 所以我看到这样的情况: try { // Won't throw (I think that is the case anyway!) if (e.Error == null) { ret

我正在看一些我正在重构的代码,并注意到尝试。。。catch代码包装了相当多的代码,不是所有会抛出“正常”异常的代码,也就是说,代码根本不会抛出异常,或者如果它抛出异常,那么它将是完全致命的异常,比如内存不足异常

我现在想知道的是,在try语句中包装太多是否会导致性能问题

所以我看到这样的情况:

try
{
    // Won't throw (I think that is the case anyway!)
    if (e.Error == null)
    {
        return;
    }

    // Only fatal exceptions
    myClass c = new myClass();

    // Now carry out the code that could cause catchable exception
}
catch
{
}

除非真的抛出异常,否则try-catch不会给您带来可测量的性能影响。

性能问题?没有什么值得注意的,真的。然而,从寻找bug的角度来看,这可能是一场噩梦。当您在try/catch中包装100行代码时,很难确定这100行代码中哪一行引发了异常。尽管有所有逻辑(或者实际上是因为人类逻辑有缺陷),但“永远不应该抛出异常”的代码通常抛出的异常最多


我说,如果您的代码永远不应该抛出异常,那么就通过不将其包装在try/catch块中来备份它。否则,只需尝试/捕获您的
Main
方法,然后使用它。

e.Error
将在
e
为null时引发异常。公正的评论:-)为了我的问题,让我们假设e不是null。我只是想知道try wrapping是否真的提高了性能+1个好问题,我想知道这个tooth是一个很好的观点,它可以在过度包装的情况下跟踪异常。我甚至没有考虑到这一点。