如何在java中从线程传播异常?
代码: 在线程中执行的方法抛出checked exception-IOException。 我需要在主线程中处理这个异常。 比如: 这可能吗?如果没有,有什么更好的方法可以做到这一点如何在java中从线程传播异常?,java,multithreading,exception,methods,outer-join,Java,Multithreading,Exception,Methods,Outer Join,代码: 在线程中执行的方法抛出checked exception-IOException。 我需要在主线程中处理这个异常。 比如: 这可能吗?如果没有,有什么更好的方法可以做到这一点 谢谢。线程是一个单独的进程,您不能将您的异常传播到其他线程,因为它们无法通过异常路由进行通信。但是,您可以使用线程间通信,并且当异常发生时,您必须在逻辑上处理该情况。您必须在运行方法中处理异常: outerMethod() throws IOException { @Override
谢谢。线程是一个单独的进程,您不能将您的异常传播到其他线程,因为它们无法通过异常路由进行通信。但是,您可以使用线程间通信,并且当异常发生时,您必须在逻辑上处理该情况。您必须在运行方法中处理异常:
outerMethod() throws IOException
{
@Override
public void run() {
innerMethod() throws IOException
}
}
使用未来任务。它的get方法将封装任务中可能在另一个线程上运行的任何异常
ExecutionException:尝试检索通过引发异常而中止的任务的结果时引发的异常。可以使用Throwable.getCause()方法检查此异常
从
如果线程已定义UncaughtExceptionHandler,则将调用它,
如果已定义,则将调用Else线程组的UncaughtExceptionHandler,
否则它可以转发到默认的未捕获异常处理程序 @user710818:快来看看这个-
outerMethod() throws IOException
{
@Override
public void run() {
innerMethod() throws IOException
}
}
@Override
public void run() {
try {
innerMethod();
} catch (Exception e) {
//handle e
}