我有一个生成线程的类(文件i / o)。我需要在线程中捕获异常 - 我不想做任何花哨的事情,我想杀死主线程,而是完全停止处理,以便它可以重新开始。
如果我在线程中捕获异常,那一切都很好,但调用者仍然继续,我希望它能够死掉。
我有一些想法,但没有什么能真正让我到处都是。什么是最简洁的方法 - CallBack,UnCaughtExceptionHandler?别的什么? 我也被降级为Java 5
答案 0 :(得分:3)
最常见的方法是向Callable
提交Executor
,并收到Future
。然后,您可以调用Future.get
以查明是否抛出了任何异常。
至于UncaughtExceptionHandler
,你只能在原始线程中使用它,因为Executor
在内部处理未捕获的异常(因此你甚至看不到处理程序中未被捕获的异常!),并且因为你很少想在Executor
s上使用原始线程,Callable
是IMO最好的选择。