Предотвратить завершение приложения при возникновении общего исключения
Есть ли способ перехватить в одном месте все "необработанные" исключения и позволить приложению продолжить работу?
Я вижу, что могу использовать setUncaughtExceptionHandler, чтобы сделать некоторую регистрацию и что-то еще, но приложение все еще завершится Я хочу кое-что, где я могу зарегистрировать исключение, сказать пользователю, что его действие не удалось, и позволить ему продолжать (попробуйте что-нибудь другое).
Благодарю.
2 ответа
Я не уверен, почему ты этого хочешь. Поймайте исключения из методов, которые, как известно, генерируют их, и протестируйте свой код, чтобы избежать исключений, таких как NullPointerException. Это способ написать хороший код.
Извините, что вернулся к такой старой теме, но так как нет правильного ответа, я счел необходимым найти решение.
Добавьте это к деятельности, которая открывается каждый раз, когда приложение используется (например, MainActivity) -
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Exception"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
}
});
Что он делает, так это то, что он устанавливает обработчик по умолчанию для необработанных исключений и не закрывает приложение, когда оно появляется. Однако с большой силой приходит большая ответственность. Я не рекомендую использовать это как способ избежать ответственности за перехват исключений в вашем коде (например, с помощью try-catch). Протестируйте свой код, чтобы сделать его максимально свободным от ошибок перед запуском.