如果我有一段代码做了这样的事情。异常处理程序导致任何性能下降?
try
{
...
}
catch(Exception ex)
{
throw;
}
事实上,在catch块我们只做了一个throw,我似乎无法找到这个特殊的异常处理程序的任何优势。有没有任何性能问题成为代码流的不必要的原因?
如果我有一段代码做了这样的事情。异常处理程序导致任何性能下降?
try
{
...
}
catch(Exception ex)
{
throw;
}
事实上,在catch块我们只做了一个throw,我似乎无法找到这个特殊的异常处理程序的任何优势。有没有任何性能问题成为代码流的不必要的原因?
它可能导致当异常被抛出的性能损失 - 但如果被抛出往往不够一个例外,要成为一个问题,它可能是已经问题事先(例外一般应不造成显着的性能下降,因为它们只能在特殊情况下使用)。
它可能导致即使一个异常不是抛出一个性能命中,因为它可以防止方法被内联。
它确实导致可读性/简单性问题 - 这是摆脱它的主要原因。也许它出于调试目的,但没有理由在检入代码中使用它。这是丑陋的和毫无意义的,所以一定要删除。
+1。即将发布类似的东西,但像往常一样,Jon Skeet的答案非常出色。 – Polynomial
谢谢乔恩。我想了解的是try-catch块中的代码与相同的代码不在try-catch块中的情况 –
@SilverlightStudent:当catch块刚刚抛出时,不会有太多的语义差异 - 除了你可以在那里放置一个断点。 –
除了表现,它也只是简单的愚蠢。 – vcsjones
我知道;我看到有人在做这件事。想要确保我理解它的所有可能的副作用 –
我会想象如此,但如果您想了解幅度,我建议您编写一个简单的控制台应用程序基准测试。尽管如此,这听起来像是死的代码。也许它被添加来帮助调试一个特定的问题(在throw上设置一个断点),那么问题就解决了,代码被留下了? –