问题标签 [rethrow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
188984 浏览

c# - 捕获和重新抛出 .NET 异常的最佳实践

捕获异常并重新抛出它们时要考虑的最佳实践是什么?我想确保保留Exception对象InnerException和堆栈跟踪。以下代码块的处理方式有区别吗?

对比:

0 投票
6 回答
6345 浏览

exception-handling - 为什么 resharper 会说“带有单个 'throw' 语句的 Catch 子句是多余的”?

我认为抛出异常是一种很好的做法,可以让它冒泡到 UI 或记录异常并通知用户的地方。

为什么 resharper 说它是多余的?

0 投票
4 回答
74536 浏览

c++ - 关于重新抛出原始异常的 C++ 异常问题

catch中后面的append()会不会导致rethrow的异常看到append()被调用的效果?

同样,如果我这样重写,如果实际异常是由 myErr 派生的,是否会发生位切片?

0 投票
3 回答
337 浏览

c# - 如何检测使用 StyleCop 或 VS2010 重新抛出 C# 异常的坏方法?

我的同事们都是经验丰富的 C++ 黑客,他们转而使用 .Net。他们无意中犯的错误之一是编写如下代码:

我在很多地方都看到过这种做法。我真的想不出切断堆栈跟踪有用的情况。我认为这应该是值得评论的特殊情况。如果我错了,请纠正我。如果要剪切堆栈跟踪,我认为最好这样做:

无论如何,我想做的是检测所有此类情况并发出警告。正则表达式搜索没有帮助,因为:

我将不得不使用 StyleCop 之类的工具(我有,版本 4.3.3.0 )。我现在正在使用 VS2008,但很快就会切换到 VS2010。

关于如何完成我正在寻找的任何想法?

0 投票
5 回答
3368 浏览

c# - 投掷 VS 重投:同样的结果?

参考网上的很多文档,特别是关于 SO,例如:在 C# 中重新抛出异常的正确方法是什么? "throw e;" 之间应该有区别 和“扔;”。

但是,来自:http ://bartdesmet.net/blogs/bart/archive/2006/03/12/3815.aspx ,

这段代码:

给出以下结果:

这与博客文章完全矛盾。

使用以下代码获得相同的结果:http: //crazorsharp.blogspot.com/2009/08/rethrowing-exception-without-resetting.html

原始问题:我做错了什么?

更新:与 .Net 3.5 / csc.exe 3.5.30729.4926 的结果相同

总结:你所有的答案都很棒,再次感谢。

所以原因是由于 64 位 JITter 而有效地内联。

我只能选择一个答案,这就是我选择LukeH答案的原因:

  • 他猜到了内联问题,并且可能与我的 64 位架构有关,

  • 他提供了 NoInlining 标志,这是避免这种行为的最简单方法。

然而这个问题现在引发了另一个问题:这种行为是否符合所有 .Net 规范:CLR 规范和 C# 编程语言规范?

更新:这种优化似乎符合:Throw VS rethrow:相同的结果?(感谢0xA3

在此先感谢您的帮助。

0 投票
2 回答
1297 浏览

c++ - 没有参数的 C++ throw 会在另一个框架内工作以重新抛出异常吗?

如果我有如下代码:

原始异常会从 noteError() 的下框架内的两个地方抛出吗?

0 投票
2 回答
2634 浏览

exception - C ++重新抛出异常给出错误

我试图捕获一个“特定”异常(FormatException^ 或 OverflowException^),然后重新抛出它并在“一般”异常(Exception^)捕获块中捕获它。

运行时,我通过输入给它一个格式异常。然后,我在对话框中收到此错误:“FutureValue.exe 中发生了 'System.FormatException' 类型的未处理异常附加信息:输入字符串的格式不正确。” 当我单击“中断”时,它会将我带到第 232 行。

这是部分代码:

0 投票
12 回答
6912 浏览

c# - 重新抛出错误的堆栈跟踪

我用“throw;”重新抛出异常,但堆栈跟踪不正确:

正确的堆栈跟踪应该是:

但我得到:

但是第 15 行是 "throw;" 的位置。我已经用 .NET 3.5 对此进行了测试。

0 投票
3 回答
8174 浏览

powershell - Powershell tr​​y/catch rethrow 不传播错误(Powershell 2.0)

我在 try-catch 语句中有一个 try-catch 语句。内部 catch 捕获错误,但 throw 不会导致错误在 out catch 语句中被捕获。Breifly,我的脚本格式类似于:

当我运行脚本时没有错误,但我注意到我试图填充的 SQL Server 数据库缺少数据。当我在调试中重新运行脚本时,函数“putStuffInDB”有一个错误,在 catch 块中被捕获。但是当我踩到消息时,消息并没有被“抛出”到外部 catch 块,而是处理了 finally 块并终止。

我显然错过了一些我没有看到的东西。我过去曾在 C# 中使用过该构造,并且从未遇到过将错误“传递”到外部 catch 块的问题。

0 投票
1 回答
3780 浏览

php - 在这种情况下我应该重新抛出异常吗?

这种方法可以吗?我是否正确处理异常?看我的课: