c# - c#.net 中 throw 和 throw ex 的区别

标签 c# throw

<分区>

谁能简单告诉我throwthrow ex 的区别? 我读到 throw 存储了以前的异常,但没有得到这一行。
我可以通过示例简要说明吗?

最佳答案

是 - throw 重新抛出捕获的异常,并保留堆栈跟踪。 throw ex 抛出相同的异常,但重置堆栈跟踪到该方法。

除非您想要重置堆栈跟踪(即保护公共(public)调用者免受库内部工作的影响),throw 通常更好的选择,因为您可以看到异常的来源。

我还要提到“传递”catch block :

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

毫无意义。这与根本没有 try/catch 时的行为完全相同。

关于c# - c#.net 中 throw 和 throw ex 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756461/

相关文章:

c# - 如何从位创建字符串?

c# - jQuery 中有一些处理时间段数据类型的方法吗?

c# - 缓存过期,尽管明确设置为不过期

c++ - 引发导致代码崩溃,而不仅仅是退出

c++ - 这是否被认为是内存泄漏?

java - 捕获异常并重新抛出

c# - `out` 变量未分配...除非条件是内联的?

c# - 有没有办法使用搜索选项 : All directories but it skips to the next folder after searching first layer of the folder

c++ - 抛出声明

c++ - 如何在 C++ 中以干净的方式处理异常