我意识到如果在我的runnable的run方法内部(或不是,但应该与之相关)引发异常,我的所有未来任务都将无法运行。
所以我的问题是:如何从这样的异常中恢复(在何处捕获它)?
我试过这个: ScheduledExecutorService Exception handling 如果我执行while循环来捕获异常,则仍未执行将来的任务。我也试图安排捕获,也没有任何帮助。
我尝试将一个巨大的try / catch包含在run方法中的所有代码中,但它似乎没有捕获任何内容,并且一些异常仍然没有捕获并导致我未来的所有任务都无法运行。
答案 0 :(得分:2)
在执行程序框架中,您可以控制将作业从一个主应用程序线程运行到一个线程池线程。线程通过调度提交工作,或者向submit方法返回一个Future对象,该对象允许它通过get方法获取信息。 get方法将抛出一个执行程序异常,其原因可能是runnable中的代码抛出的异常。如果主线程不这样做,它将永远不会看到该异常,因此它实际上取决于您的应用程序逻辑流程。
另外还要提一下,如果你尝试全部捕捉,如果你做的事情与你相似,你是什么意思
try {
....
}
catch(Exception e) {
.... }
你真的没有在应用程序中捕获错误(throwable是异常和错误的父亲)所以你可能有一些静态初始化程序错误(在静态块中捕获异常)
同样,这一切都取决于你希望异常处理如何发生,你有充分的力量,
谢谢