2017-02-21 54 views
0

Я прочитал articile, а отличное решение прекрасно работает в среде Activity. я тестировал сAndroid MVP: Обработка ошибок из класса модели/ошибка ручного запуска

int a = 1/0; 

в OnCreate. И пользовательский обработчик исключений срабатывает.

В настоящее время мое приложение использует архитектуру MVP. Есть некоторые коды, реализованные в слое модели или презентатора, например

try { 
     data = getStringFromFile(fileLocation); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

который может быть исключение. Однако исключения, которые попадают на уровень Presenter или Model, не запускают обработчик исключений по умолчанию.

Что делать, чтобы исключающее исключение из слоя Model или Presenter запускало пользовательский UncaughtExceptionHandler, который я создал?

А также, есть ли способ запустить пользовательский UncaughtExceptionHandler вручную, используя мое самоопределенное исключение.

+0

Бросить исключение е из блока улова в классе Presenter. Поскольку класс-презентатор обрабатывается классом Activity, он генерирует исключение из вашего класса Activity, где вы уже обрабатывали Exception. – nnn

+0

В классах моделей обычно есть только получатели и сеттеры. Не должно быть никаких исключений. – nnn

+0

@nnn Извините, моя модель также включает классы Engine/Service/Manager/Helper. Я попытался выбросить Exception из Presenter, однако Android Studio попросила меня обернуть презентатора с помощью try/catch. Могу ли я узнать, как правильно обрабатывать его в классах View? int a = 1/0 никогда не запрашивает сообщение об ошибке и заставляет его обернуть его с помощью try/catch. – wenyang9319

ответ

0

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

public void getData() throws Exception 
try { 
     int a = 1/0; 
    } catch (Exception e) { 
     throw e; 
    } 
}