【问题标题】:java ScheduledExecutorService runnable exception handlingjava ScheduledExecutorService 可运行异常处理
【发布时间】:2011-11-27 00:42:08
【问题描述】:

我意识到,如果在我的 runnable 的 run 方法内部(或没有,但应该与)引发异常,我未来的所有任务都不会运行。

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

我试过这个: ScheduledExecutorService Exception handling 如果我做一个while循环来捕获异常,未来的任务仍然没有执行。我也尝试过安排捕捞,也无济于事。

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

【问题讨论】:

标签: java multithreading


【解决方案1】:

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

还要提一下,如果您尝试全部捕获,如果您正在做类似的事情,那是什么意思

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

你真的没有在你的应用程序中发现错误(throwable 是异常和错误之父),所以你可能会遇到一些静态初始化错误(在静态块中捕获的异常)

再次,这完全取决于您希望异常处理如何发生,您拥有全部权力,

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多