Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java ScheduledExecutorService可运行异常处理_Java_Multithreading - Fatal编程技术网

java ScheduledExecutorService可运行异常处理

java ScheduledExecutorService可运行异常处理,java,multithreading,Java,Multithreading,我意识到,如果在runnable的run方法内部(或者没有,但是应该与之相关)引发异常,那么我未来的所有任务都不会运行 所以我的问题是:我如何从这样的异常中恢复(在哪里捕捉它) 我试过这个: 如果我执行while循环来捕获异常,那么未来的任务仍然不会执行。我也试着安排捕获时间,也没有任何帮助 我试图用一个巨大的try/catch来包装run方法中的所有代码,但它似乎没有捕获任何东西,一些异常仍然没有捕获,并导致我未来的所有任务都无法运行。在executor框架中,您将控制作业从一个主应用程序线程

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

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

我试过这个: 如果我执行while循环来捕获异常,那么未来的任务仍然不会执行。我也试着安排捕获时间,也没有任何帮助


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

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

还有一件事要提的是,如果你想一网打尽,如果你在做类似的事情,你的意思是什么

try {
....
}
catch(Exception e) {
    .... }
你真的没有在你的应用程序中捕捉到错误(throwable是异常和错误之父),所以你可能有一些静态初始化错误(在静态块中捕捉到异常)

同样,这取决于您希望异常处理的方式—您拥有全部权限


谢谢你

也许会帮助你发布你的实际代码,或者更好地发布一个有同样问题的简化版本。