我的代码的某些部分是抛出java.util.concurrent.ExecutionException异常。 我怎么处理这个?我可以使用throws条款吗?我对java有点新鲜。
答案 0 :(得分:11)
这取决于你Future
如何处理它的关键任务。事实是你不应该得到一个。如果您的Future
中执行的代码未执行某些操作,则您只会遇到此异常。
当您catch(ExecutionException e)
时,您应该能够使用e.getCause()
来确定Future
中发生的事情。
理想情况下,您的例外不会像这样冒泡到表面,而是直接在Future
处理。
答案 1 :(得分:2)
您应该调查并处理ExecutionException的原因。
“Java并发操作”一书中描述的一种可能性是创建launderThrowable
方法来处理解包通用ExecutionExceptions
void launderThrowable ( final Throwable ex )
{
if ( ex instanceof ExecutionException )
{
Throwable cause = ex.getCause( );
if ( cause instanceof RuntimeException )
{
// Do not handle RuntimeExceptions
throw cause;
}
if ( cause instanceof MyException )
{
// Intelligent handling of MyException
}
...
}
...
}
答案 2 :(得分:2)
如果您正在寻找处理异常,事情就非常简单。
public void exceptionFix1() {
try {
//code that throws the exception
} catch (ExecutionException e) {
//what to do when it throws the exception
}
}
public void exceptionFix2() throws ExecutionException {
//code that throws the exception
}
请记住,第二个示例必须包含在执行层次结构中的try-catch
块中。
如果您要修复此异常,我们必须查看更多代码。