我有一个类来生成线程(文件i/o)。我需要捕捉线程中的异常--我不想做任何花哨的事情,我想杀死主线程,而是完全停止处理,这样它就可以重新开始了。
如果我捕获线程中的异常,这一切都很好,但是调用方仍然继续,我希望它死掉。
我已经有了一些想法,但没有什么能真正使我有所收获。做这件事最简洁的方法是什么-回调,UnCaughtExceptionHandler?还有别的吗?我也被降级到Java 5
发布于 2015-06-15 14:14:43
最常见的方法是将Callable提交给Executor,并接收Future。然后,您可以调用Future.get,以确定是否抛出任何异常。
至于UncaughtExceptionHandler,您只能在原始线程中使用它,因为Executor在内部处理未处理的异常(因此在处理程序中甚至看不到未处理的异常!),而且由于您很少想在Executors上使用原始线程,所以Callable是最好的选择。
https://stackoverflow.com/questions/30847400
复制相似问题