【问题标题】:How to handle different exceptions in Task?如何处理Task中的不同异常?
【发布时间】:2016-06-09 13:25:56
【问题描述】:

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

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

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

【问题讨论】:

  • 谢谢,它有效!您的评论应该是答案。

标签: javafx concurrency java-8


【解决方案1】:

你可以只检查异常的类型:

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 {
       // ...
    }
});

【讨论】:

  • 经过测试,可以只修改这一行:Exception exc = (Exception) myTask.getException();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
相关资源
最近更新 更多