gpt4 book ai didi

java ScheduledExecutorService 可运行异常处理

转载 作者:行者123 更新时间:2023-12-02 08:10:07 29 4
gpt4 key购买 nike

我意识到,如果在我的可运行对象的 run 方法内部(或没有,但应该与之相关)引发异常,我 future 的所有任务都将不会运行。

所以我的问题是:我如何从这样的异常中恢复(在哪里捕获它)?

我已经尝试过这个: ScheduledExecutorService Exception handling如果我执行 while 循环来捕获异常,则将来的任务仍然不会执行。我也尝试安排捕获,也没有帮助。

我试图放置一个巨大的 try/catch 将所有代码包装在 run 方法中,但它似乎没有捕获任何内容,并且一些异常仍然没有捕获并导致我所有 future 的任务无法运行。

最佳答案

在执行器框架中,您将运行作业的控制权从一个主应用程序线程转移到线程池线程。线程通过调度提交工作,或者submit方法返回一个Future对象,允许它通过get方法获取信息。 get 方法将抛出一个执行程序异常,其原因可能是您的可运行对象中的代码抛出的异常。如果主线程不这样做,它将永远不会看到该异常,因此这实际上取决于您的应用程序逻辑流程。

还有一件事要提,如果你 try catch 所有,如果你正在做类似的事情,这是什么意思

try {
....
}
catch(Exception e) {
.... }

您确实没有捕获应用程序中的错误(可抛出的错误是异常和错误的父亲),因此您可能会遇到一些静态初始化错误(静态 block 中捕获的异常)

这一切都取决于您希望异常处理如何发生,您拥有全部权力,

谢谢

关于java ScheduledExecutorService 可运行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7586298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com