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

Art*_*rdi 5 concurrency javafx java-8

我是JavaFX的新手,我没有找到任何答案.

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

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

Jam*_*s_D 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 {
       // ...
    }
});
Run Code Online (Sandbox Code Playgroud)