更具体的异常处理是否会提高性能?

Does more specific exception handling improve performance?

如果我能捕捉到更具体的异常,我是否能阻止 clr 做额外的工作并提高性能?因此,如果我知道我可能会遇到套接字异常,但不关心以与其他异常不同的方式处理它,是否仍然有更具体的捕获更好?我正在研究 MicroFramework,因此性能和资源方面的小改进值得询问。

 catch (System.Net.Sockets.SocketException netEx)
            {

            }

 catch (Exception ex)
            {

            }

在性能方面我不会考虑这个。

从代码正确性的角度来看:您应该几乎总是 catch 最具体的异常。

当您捕获 Exception 时,您的异常处理程序将吞下 任何 异常,即使您不准备处理它。想象一下 ArgumentNullException 被抛出。 catch 块会吞下它并引起混乱。

如果您准备处理的只是 SocketException 那么就抓住它。如果它的性能较低,那就这样吧。代码正确性不是为了如此微小的性能提升而牺牲的东西*

* 或根本没有性能提升 - 我 几乎 肯定存在 执行时间性能影响。我在我的电脑上做了一个基准测试,性能差不多。这不是一个全面的测试,但足以证实我的直觉。您可以使用类似于 this one

的技术 运行 自己的基准测试