【发布时间】:2013-06-05 05:06:08
【问题描述】:
我询问了有关在线程上下文中捕获已检查异常的问题;接受的答案是使用Callables 和Futures。
但我意识到我可以简单地用匿名线程包装“工作”方法并捕获异常,因为它将在没有线程的情况下执行。
(worker的逻辑从实现Callable的新类移到调用者类)
class BlaBla{
public void foo(){
Thread th = new Thread(new Runnable() {
public void run() {
try {
doWork();
} catch (MyCheckedException e) {
dosomething();
}
}
});
th.start();
}
public void dowork throws MyCheckedException{
}
这种方法有什么问题吗?
【问题讨论】:
-
是否存在问题取决于您要达到的目标。为什么不希望在主线程中捕获异常?
-
是的,没关系,或者您可以使用 UncaughtExceptionHandler:stackoverflow.com/a/12409676/829571
标签: java multithreading exception-handling checked-exceptions