2016-06-09 9 views
5

Jestem trochę nowy w JavaFX, i nie znalazłem żadnej odpowiedzi na to.Jak obsługiwać różne wyjątki w zadaniu?

Próbuję użyć zadania, aby wykonać obliczenia w tle w bazie danych. Problem jest następujący: Jak obsłużyć wyjątki (wyjątek SQLException, IOException itp.) W moim task.SetOnFailed (e -> ....)?

Próbowałem to: e.getSource(). GetException(). GetMessage(), ale nie sądzę, jest to właściwy sposób to zrobić.

+1

Dzięki, to działa! Twój komentarz powinien być odpowiedzią. –

Odpowiedz

5

można po prostu sprawdzić typ wyjątku:

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

Po przetestowaniu możesz po prostu zmodyfikować linię: Exception exc = (Exception) myTask.getException(); –

+1

Ach, tak, przepraszam: zaktualizowany; powinien skompilować, jak jest teraz. –