当我使用Void作为返回类型时,我想知道如何处理来自Callable的异常。
这样的事情:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
call a third party code where an exception is thrown...
return null;
}
});
由于我不需要来自此callable的任何结果,因此我不会调用从调用executor.submit()返回的Future上的get()。因此吞下了例外。
处理此类异常的正确方法是什么?
答案 0 :(得分:3)
call()方法中的try / catch怎么样? - 我想这取决于发生异常时你想做什么。
public Void call() throws Exception {
try {
ThirdParty.doSomething();
} catch(SomeTypeException e) {
SomeErrorHandler.handleThisError(e); // E.g. report it to the user
}
return null;
}