c#.net中throw和throw ex的区别[复制]

参见英文答案 > Is there a difference between “throw” and “throw ex”?                                    10个
任何人都可以简单地告诉我投掷和投掷之间的区别吗?
我读到throw存储先前的异常,而不是获得此行.
我可以举例说明这个吗?
最佳答案
是 – 抛出重新抛出捕获的异常,并保留堆栈跟踪. throw ex会抛出相同的异常,但会将堆栈跟踪重置为该方法.

除非您想重置堆栈跟踪(即屏蔽公共调用者与库的内部工作方式),否则抛出通常是更好的选择,因为您可以看到异常发生的位置.

我还要提到一个“传递”捕获块:

try
{
   // do stuff
}
catch(Exception ex)
{
    throw;
}

毫无意义.这与完全没有try / catch的行为完全相同.

转载注明原文:c#.net中throw和throw ex的区别[复制] - 代码日志