如何在Task中处理不同的异常?

时间:2016-06-09 13:25:57

标签: javafx concurrency java-8

我在JavaFX中有点新,我没有找到任何答案。

我尝试使用Task在数据库中进行背景计算。问题如下:我如何在task.SetOnFailed(e - > ....)函数中处理异常(SQLException,IOException等...)?

我试过这个:e.getSource()。getException()。getMessage()但我不认为这是正确的方法。

1 个答案:

答案 0 :(得分:7)

您只需检查例外的类型:

Task<Something> myTask = new Task<Something>() {
    @Override
    public Something call() throws Exception {
        // code...
        return something ;
    }
};

myTask.setOnFailed(e -> {
    Throwable exc = myTask.getException();

    if (exc instanceof SQLException) {
        // ... 
    } else if (exc instanceof IOException) {
       // ...
    } else {
       // ...
    }
});