更具体的异常处理是否能提高性能
本文关键字:高性能 是否 异常处理 | 更新日期: 2023-09-27 18:06:58
如果我可以捕获一个更具体的异常,我是否可以防止clr做额外的工作并从性能方面受益?所以,如果我知道我可能会得到一个套接字异常,但不关心它的处理方式与其他异常不同,是否仍然有更具体的捕获?我正在开发微框架,所以性能和资源方面的小改进值得询问。
catch (System.Net.Sockets.SocketException netEx)
{
}
catch (Exception ex)
{
}
我不会考虑性能方面的问题。
从代码正确性的角度来看:你应该总是尽可能地catch
最具体的异常。
当你捕获Exception
时,你的异常处理程序将吞下任何异常,即使你没有准备好处理它。想象一个ArgumentNullException
被抛出。catch块会吞下它,造成混乱。
如果所有你准备处理的是一个SocketException
,然后抓住它。如果它的性能较差,那就顺其自然吧。代码的正确性不应该为了如此微小的性能提升而牺牲*
*或根本没有性能增益-我几乎肯定完全没有执行时间性能暗示。我在我的电脑上做了一个基准测试,性能差不多。这不是一个全面的测试,但它足以证实我的直觉。您可以使用类似于