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();

	}