Предотвратить завершение приложения при возникновении общего исключения

Есть ли способ перехватить в одном месте все "необработанные" исключения и позволить приложению продолжить работу?

Я вижу, что могу использовать 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). Протестируйте свой код, чтобы сделать его максимально свободным от ошибок перед запуском.

Другие вопросы по тегам