如何在Callable中完成exception处理
我知道可调用的调用可以将exception抛出到调用它的父方法,而runnable不是这种情况。
我想知道如何因为它是一个线程方法,并且是线程堆栈的最底层方法。
Callable
是将您的exception抛出到您的调用线程,例如,当您获得提交callable
的Future
的结果时。
public class CallableClass implements Callable { ... } ExecutorService executor = new ScheduledThreadPoolExecutor(5); Future future = executor.submit(callable); try { System.out.println(future.get()); } catch (Exception e) { // do something }
Callable.call()
不能是最底层的堆栈帧。 它总是被另一个方法调用,然后捕获exception。 Callable
通常应该用于异步计算值,然后使用Future
对象获取它们。 当您尝试获取Future
的值时,该操作可能会抛出稍后重新抛出的exception。
Runnable
只是运行一个不返回任何东西的操作。 所有exception处理都应该在Runnable
完成,因为不清楚如何处理Runnable.run()
抛出的任何exception。 (来自Callable
的例外通常会返回给具有Future
的调用者)