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

groovy - Groovy 捕获父异常但不是子异常

(上下文:与应用程序-Jenkins-集成,但并非所有插件都具有良好的设计)

我有这些例外:

在某些情况下,我想捕捉 IOException 但避免捕捉 AbortException

哪一个更正确?

或者

我不确定在第一种情况下,第二个 catch 块是否会拦截重新抛出的 AbortException

0 投票
1 回答
45 浏览

java - 在函数/对象构造的地方重新抛出异常

在函数的情况下,当异常可能只在它们的执行位置抛出时(基于我缺乏知识,这对我来说目前还不确定),有时罪魁祸首可能依赖于 lambda 的创建方式,一个例子可能是:

我尝试从 accept() 方法中重新抛出异常,但它永远不会被推(拉?)超出其消费点(消费者接受“s”的地方):

- 在这种情况下,我使用“超越”这个词,但我需要的是在其构造点抛出异常。-

实际上,真正的罪魁祸首可能是方法的执行:mergeSwitch(Observable<S> source, Function<S, Observable<T>> switchMap) 它创建了 Consumer<>,可能遗漏了一些重要的东西。

或者就我而言,执行mergeSwitch()的方法:

在这种情况下,问题是该函数留下了一个空值。

因此,如果我们看一下消费者级别,真正的罪魁祸首是:

在这种特殊情况下,事情很容易失控,因为日志可能不会在最近的消费点停止,但错误可能会一直回到根节点。

事情可能会变得更加复杂,因为作为异常起源的 merge() 方法可能已从 3 种不同的方法中使用。

理想的情况是在此处抛出异常:

但是我还没有找到一种方法来管理这个特殊的异常重新抛出案例。

0 投票
1 回答
55 浏览

python - Python 等效于 MATLAB 的 rethrow()

我正在尝试在 Python 中移植一个工作的 MATLAB 代码。我正在尝试创建大小为 ( , )的var数组。如果引发异常,我会捕获它并再次尝试创建大小为 ( , -1) 的数组。如果变为零,那么我不能做任何其他事情,所以我之前捕获的异常。rowscolsvarrowscolscolsrethrow

代码片段如下:

国家文件rethrow

无需从 MATLAB 执行方法的位置创建堆栈,而是rethrow保留原始异常信息并使您能够追溯原始错误的来源。

我的问题是:我应该在 Python 中编写什么才能获得与 MATLAB 相同的结果rethrow

在 Python 中,我编写了以下内容。这足够了吗?

0 投票
0 回答
48 浏览

flutter - Try catch 块不会捕获重新抛出的错误

用户界面代码:

认证服务代码:

我想将 FirebaseAuthException 从身份验证服务重新抛出到 UI,因此我可以向用户提示出错的地方,但 UI try-catch 块不会捕获重新抛出的错误。

为什么我的代码不起作用?

0 投票
0 回答
34 浏览

java - 将已检查异常的*原因*重新抛出为未检查异常有什么缺点吗?

我正在编写一个库,在其中我在内部使用检查的异常,因为它有助于确保所有路径都处理某些异常情况。但是,由于我使用了以下规则,我不想给我的图书馆用户带来这些检查异常的负担:

只有在调用者和接收者都无法控制的情况下,才应检查异常。

由于大多数内部检查异常都指向配置问题或其他在正确设置中永远不会发生的问题(因此可以由用户解决),因此我希望在我的 API 边界处将这些作为未经检查的异常公开。

通常,我会将这些检查的异常包装在未经检查的变体中并完成它。但是,在这个库中,我有时已经有 3 级异常嵌套,例如:

在顶部添加另一个级别(这不会真正添加任何相关信息)使得更难看到根本原因,并且需要instanceof检查getCause用户代码是否确实想要进行特定处理。我目前这样做:

但是,如果我这样做了怎么办:

这会剥离一个嵌套级别,但会保持跟踪完整。跟踪看起来略有不同,但仍包括所有涉及的行。

我的问题是,这种方法是否有我遗漏的缺点?

0 投票
0 回答
74 浏览

flutter - 为什么如果我们从 finally 返回,从 catch 重新抛出不起作用?

为什么第一个案例打印:“二级捕获”“顶级捕获”

和第二种情况打印:只有“二级捕获”?

finally 块的区别。

为什么要打印 3 个案例:“二级捕获”“顶级捕获”

0 投票
3 回答
45 浏览

java - 捕获我不想捕获的错误

每次我运行此代码时,一切正常,但如果存款方法抛出错误,则只有main 方法中的 捕获异常并打印字符串,catch尽管 catch. ExceptionsDemo为什么会这样?