Бросить исключение из слушателя - PullRequest
0 голосов
/ 07 мая 2018

Я заменяю метод синхронизации на асинхронный, выполняющий ту же работу. Старый метод генерировал пользовательское исключение, если что-то пошло не так. Теперь у меня есть слушатель в новом методе, и я не знаю, как продолжать генерировать это исключение:

@Override
protected void methodBeingChanged() throws customException {

    asyncMethod(new Handler() {
        @Override
        public void onSuccess(String response, int responseCode) {
        }

        @Override
        public void onError(IOException e) {
        }
    });

}

Это исключение позже перехватывается другим методом в другом классе, который дает обратную связь пользователю в зависимости от сообщения об исключении.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

невозможно.Ваша асинхронная задача выполняется в другом потоке, и текущая methodBeingChanged сразу завершается, что означает, что исключение никогда не вызывается methodBeingChanged.

Единственное решение - изменить код вызывающей стороны, добавить другой метод слушателя.для конкретного исключения

0 голосов
/ 07 мая 2018

Это может звучать глупо, но просто бросьте это: p

https://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

@Override
protected void methodBeingChanged() throws customException {

    asyncMethod(new Handler() {
        @Override
        public void onSuccess(String response, int responseCode) {
        }

        @Override
        public void onError() {
            try {
                throw new customException ();
            }catch(customException cEx) {
                // Do stuff
            }
        }
    });

}
...