我来到这里,下一个代码是反模式。是不是?
try
{
//something
}
catch(Exception e)
{
//something
}
为什么更好地使用
try
{
//something
}
catch(Exception e)
{
//something
throw;
}
我得到了第二个变量用于重新抛出异常(例如日志记录),但如果我需要重新抛出相同的异常,为什么不使用下一个代码?
try
{
//something
}
catch(Exception e)
{
//something
throw e;
}
答案 0 :(得分:1)
这将重新抛出相同的异常并保持堆栈跟踪。这将使调试更容易。
catch(Exception e)
{
//something
throw;
}
这将重新抛出异常,但您将丢失堆栈跟踪。
catch(Exception e)
{
//something
throw e;
}
这将无声地吞下异常。您只想在捕获特定异常而不是Exception
时执行此操作。你通常应该有充分的理由这样做。
try
{
//something
}
catch(Exception e)
{
//something
}