问题标签 [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 投票
4 回答
7839 浏览

c# - 异常处理类

处理异常而不必到处放置 try/catch 块的最佳实践是什么?

我有创建一个专门用于接收和处理异常的类的想法,但我想知道它是否是一个好的设计理念。这样的类会收到一个异常,然后根据其类型或错误代码决定如何处理它,甚至可以解析堆栈跟踪以获取特定信息等。

这是背后的基本思想和实现:

我认为这将是一项有趣的尝试,因为理论上您在 main() 方法调用周围只需要一个或很少的 try/catch 块,并让异常类处理其他所有事情,包括重新抛出、处理、日志记录等。

想法?

0 投票
6 回答
16360 浏览

java - Java 错误:在 catch 块中抛出新异常,原始堆栈跟踪可能会丢失

在上面的示例中,在粗体线上,我收到 PMD 错误,因为“在 catch 块中抛出了新异常,原始堆栈跟踪可能会丢失”。我知道这个问题已经被问过很多次了,也有很多在线参考资料可供参考。我已经尝试了所有可能的方法。但我仍然无法删除此 PMD 错误。请让我知道这个代码片段有什么问题。提前致谢!

0 投票
3 回答
11774 浏览

c++ - catch 块中抛出的异常会被后面的 catch 块捕获吗?

考虑以下 C++ 代码:

我希望答案是否定的,因为它不在try块内,我在另一个问题中看到 Java 的答案是否定的,但想确认 C++ 也是否定的。是的,我可以运行一个测试程序,但我想知道在我的编译器有错误的远程情况下行为的语言定义。

0 投票
2 回答
362 浏览

java - Java 7 精确的重新抛出和遗留代码

更精确的重新抛出允许编写抛出真正抛出的异常的代码:

在 Java 7 之前,您必须编写:

我的问题:是否有一种工具可以检测不精确的投掷以将“ Exception”替换为“ FirstException, SecondException”?

到目前为止,我已经检查了 Eclipse 中没有编译器警告。FindBugs 或 CodePro 中没有规则。

0 投票
3 回答
3520 浏览

java - 在Java中,如果捕获并重新抛出一般异常,外部方法仍然能够捕获特定异常吗?

在Java中,如果捕获并重新抛出一般异常,外部方法仍然能够捕获特定异常吗?

换句话说,我可以这样做:

0 投票
3 回答
1710 浏览

c++ - 当我们抛出一个对象/变量来捕捉时会发生什么?

两个问题 1) 当一个对象/变量被抛出去捕获时会发生什么?比如说,

在这种情况下,这里会发生什么?创建一个新变量然后通过???

如果我使用没有引用的指针或变量怎么办

像 catch(int *i) // 或 catch (int i)

此外,是否已释放/关闭范围内声明或启动的所有变量/资源?

2)同样在重新抛出的情况下,如果我打算用引用重新抛出,第二个 catch 将获得一个新变量,如果我在没有引用的情况下重新抛出(即按值),那么中间抛出中所做的更改不受影响……

输出:catch(int &i) // 打印 2 catch(int i) // 打印 1

根据我的判断,

我认为,只要它是参考,如果它在中间步骤中“按值传递”,值就会受到影响。它仍然将原始对象扔给第二个捕获物。

(即)变量的控制流真的不抛出中间捕获.....

0 投票
1 回答
226 浏览

exception - 重新抛出异常并在循环中处理它......?

我尝试了很多重新抛出异常并得出以下结论:

1)如果我们想提供更多关于异常的细节,比如(内部异常),我们可能想重新抛出

2)我们可能会重新抛出以完全终止程序..

3)如果我们想重新抛出并且不想终止程序,那么我将不得不在循环中处理重新抛出的异常......

我在执行此操作时尝试了以下操作:

然后在 main() 中:

如果我不处理循环中重新抛出的异常,我的程序将终止......那么这是否意味着我提出的以上三个关于重新抛出异常的结论是正确的?

0 投票
3 回答
2705 浏览

c# - 如何将抛出的异常从 C# 类传递到 C# 窗体

我有一个 c# 项目,分为 UI 层和业务层。基本上我有一个表格,您可以在其中选择一个帐户并输入一个存款号码。单击确定按钮后,您的 DepositTransaction.cs 将处理交易。

以下是 DepositForm 的示例代码:

现在是 DepositTransaction 的示例代码

但是,尝试上述方法不会将错误传递给表单。它只是使程序崩溃,说没有处理异常。

我在stackoverflow上看到另一个问题,提到传递错误的方法只是使用throw:,并且该错误将传递给调用此类的类(在我的情况下为表单),并将在表单中处理。

我究竟做错了什么?谢谢

0 投票
4 回答
5700 浏览

java - 如何重新抛出异常

在我的 onCreate() 中,我设置了一个 UncaughtException 处理程序,如下所示:

它工作正常,但我想恢复系统向用户显示强制关闭对话框的默认行为。

如果我尝试KillProcess()用 a 替换调用,throw throwable编译器会抱怨我需要用 try/catch 包围它。

如果我用 try/catch 包围它:

编译器仍然抱怨throw throwable需要用 try/catch 包围。

我如何重新投掷该可投掷物?这样,除了该信息之外,Log.e()系统的行为与以前完全相同:因为我从未设置默认的 UncaughtException 处理程序。

0 投票
0 回答
307 浏览

vb.net - 将空字符串转换为 InvalidCastException 时,System.Exception“不是 T 的有效值”吗?

我遇到过几次这种情况,对我来说,.NET 操作应该抛出 System.Exception 而不是更具体的东西似乎是非常错误的。是否有理由不将此特定实例重新抛出为 InvalidCastException?将这种情况与 InvalidCastException 处理程序混为一谈不是更合适吗?

对于上下文,方法是这样的:

我正在考虑Dim prs[...]Return prs使用上面的 System.Exception 捕获。

当字符串只是“”时,罪魁祸首是 System.Exception “不是有效值”异常

“应该”是什么例外?或者 System.Exception 对于这种情况真的是一个很好的例外吗?

编辑:进一步思考, System.Exception 仅仅是方法被调用的结果吗? Int32.Parse方法(字符串)显示FormatException为该函数抛出的异常——这将是考虑这种情况的最佳异常吗?