问题标签 [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.
c# - 捕获和重新抛出 .NET 异常的最佳实践
捕获异常并重新抛出它们时要考虑的最佳实践是什么?我想确保保留Exception
对象InnerException
和堆栈跟踪。以下代码块的处理方式有区别吗?
对比:
exception-handling - 为什么 resharper 会说“带有单个 'throw' 语句的 Catch 子句是多余的”?
我认为抛出异常是一种很好的做法,可以让它冒泡到 UI 或记录异常并通知用户的地方。
为什么 resharper 说它是多余的?
c++ - 关于重新抛出原始异常的 C++ 异常问题
catch中后面的append()会不会导致rethrow的异常看到append()被调用的效果?
同样,如果我这样重写,如果实际异常是由 myErr 派生的,是否会发生位切片?
c# - 如何检测使用 StyleCop 或 VS2010 重新抛出 C# 异常的坏方法?
我的同事们都是经验丰富的 C++ 黑客,他们转而使用 .Net。他们无意中犯的错误之一是编写如下代码:
我在很多地方都看到过这种做法。我真的想不出切断堆栈跟踪有用的情况。我认为这应该是值得评论的特殊情况。如果我错了,请纠正我。如果要剪切堆栈跟踪,我认为最好这样做:
无论如何,我想做的是检测所有此类情况并发出警告。正则表达式搜索没有帮助,因为:
我将不得不使用 StyleCop 之类的工具(我有,版本 4.3.3.0 )。我现在正在使用 VS2008,但很快就会切换到 VS2010。
关于如何完成我正在寻找的任何想法?
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)
在此先感谢您的帮助。
c++ - 没有参数的 C++ throw 会在另一个框架内工作以重新抛出异常吗?
如果我有如下代码:
原始异常会从 noteError() 的下框架内的两个地方抛出吗?
exception - C ++重新抛出异常给出错误
我试图捕获一个“特定”异常(FormatException^ 或 OverflowException^),然后重新抛出它并在“一般”异常(Exception^)捕获块中捕获它。
运行时,我通过输入给它一个格式异常。然后,我在对话框中收到此错误:“FutureValue.exe 中发生了 'System.FormatException' 类型的未处理异常附加信息:输入字符串的格式不正确。” 当我单击“中断”时,它会将我带到第 232 行。
这是部分代码:
c# - 重新抛出错误的堆栈跟踪
我用“throw;”重新抛出异常,但堆栈跟踪不正确:
正确的堆栈跟踪应该是:
但我得到:
但是第 15 行是 "throw;" 的位置。我已经用 .NET 3.5 对此进行了测试。
powershell - Powershell try/catch rethrow 不传播错误(Powershell 2.0)
我在 try-catch 语句中有一个 try-catch 语句。内部 catch 捕获错误,但 throw 不会导致错误在 out catch 语句中被捕获。Breifly,我的脚本格式类似于:
当我运行脚本时没有错误,但我注意到我试图填充的 SQL Server 数据库缺少数据。当我在调试中重新运行脚本时,函数“putStuffInDB”有一个错误,在 catch 块中被捕获。但是当我踩到消息时,消息并没有被“抛出”到外部 catch 块,而是处理了 finally 块并终止。
我显然错过了一些我没有看到的东西。我过去曾在 C# 中使用过该构造,并且从未遇到过将错误“传递”到外部 catch 块的问题。
php - 在这种情况下我应该重新抛出异常吗?
这种方法可以吗?我是否正确处理异常?看我的课: