Cam*_*ker 1 c# exception try-catch rethrow
前几天我在一个使用try catch的项目中看到了一些代码,并重新抛出了这样的捕获异常:
try
{
exceptionProneCode();
}
catch(Exception ex)
{
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
catch块中的异常没有做任何事情,所以我甚至不确定它为什么会被重新抛出.实际上再次抛出相同的异常并对异常做任何事情都没有任何好处.
如果你重新抛出catch块中捕获的异常,C#如何处理这个?是否会陷入无限投掷/捕获循环?或者它最终会离开尝试捕获?
Ali*_*eza 10
考虑这两个模型:
1-通过重新throwing ex:
catch(Exception ex)
{
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
您疏松StackTrace.如果在exception某处记录StackTrace了调用堆栈的包含的直接帧(方法调用的历史记录)丢失.
2-相比之下throw:
catch(Exception ex)
{
// do something here
throw;
}
Run Code Online (Sandbox Code Playgroud)
你保持StackTrace.您可以执行其他处理,然后重新抛出而exception不会丢失跟踪字符串.