【发布时间】:2014-06-26 13:09:29
【问题描述】:
我知道下一个代码是anti-pattern。对吗?
try
{
//something
}
catch(Exception e)
{
//something
}
为什么更好用
try
{
//something
}
catch(Exception e)
{
//something
throw;
}
?
我知道第二个变体用于重新引发异常(例如记录),但如果我需要重新引发相同的异常,为什么不使用下一个代码?
try
{
//something
}
catch(Exception e)
{
//something
throw e;
}
【问题讨论】:
-
如果您使用
throw e;而不是throw;,则不会保留堆栈跟踪(例如原始行号)。新的堆栈跟踪显示您的空catch块,这是不可取的。无论如何,一个空的捕获是不好的做法。
标签: c# anti-patterns