Czy ktoś potrafiłby pomóc w następującym zagadnieniu?

Piszę program w JavieFx który się łaczy z bazą. Baza wywoływana jest asynchronicznie korzystając przy tym z service. Problemem jest założenie że w przypadku nie połączenia się z bazą danych muszę ponawiać połączenie przez określoną ilosć razy.

Próbowałem zrobić to za pomocą setOnFailed ale mimo ze zostaje wyrzucony wyjatek w którym jest this.failed. to program nigdy nie wchodzi do tej metody.
(Usunąłem niepotrzebną cześć implementacji aby kod był bardziej przejrzysty)

public class FlightControllerTask extends Service<LinkedList<Users>> {

    protected Task<LinkedList<Users>> createTask() {

        return new Task<LinkedList<Userst>>() {

            Connection c;

            protected LinkedList<Users> call() throws Exception {
                try {
                    c = DBConnector.connect();
                                         //łaczenie z bazą i wyciąganie danych za pomocą zapytań

                } catch (Exception e) {
                    this.failed();

                }

                return flightList;
            }

        };
    }
    service.setOnSucceeded(new EventHandler<WorkerStateEvent>() {

            @SuppressWarnings("unchecked")
            @Override
            public void handle(WorkerStateEvent t) {
                //kod w przypadku pozytywnego połaczenia sie z baza danych
            }

        });
        service.setOnFailed(new EventHandler<WorkerStateEvent>() { //kod w przypadku negatywnego połaczenia z baza danych.

            @Override
            public void handle(WorkerStateEvent t) {
                try{
                    Thread.sleep(1000);
                    service.restart();
                    System.out.println("Nie można uruchomić bazy danych");
                }
                catch(InterruptedException e){
                        e.getMessage();
                }

            }
        });

        service.start();

    }