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

本文关键字:高性能 是否 异常处理 | 更新日期: 2023-09-27 18:06:58

如果我可以捕获一个更具体的异常,我是否可以防止clr做额外的工作并从性能方面受益?所以,如果我知道我可能会得到一个套接字异常,但不关心它的处理方式与其他异常不同,是否仍然有更具体的捕获?我正在开发微框架,所以性能和资源方面的小改进值得询问。

 catch (System.Net.Sockets.SocketException netEx)
            {
            }
 catch (Exception ex)
            {
            }

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

我不会考虑性能方面的问题。

从代码正确性的角度来看:你应该总是尽可能地catch最具体的异常。

当你捕获Exception时,你的异常处理程序将吞下任何异常,即使你没有准备好处理它。想象一个ArgumentNullException被抛出。catch块会吞下它,造成混乱。

如果所有你准备处理的是一个SocketException,然后抓住它。如果它的性能较差,那就顺其自然吧。代码的正确性不应该为了如此微小的性能提升而牺牲*

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

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