すべての「キャッチされていない」例外を1か所でキャッチして、アプリを続行させる方法はありますか?
setUncaughtExceptionHandlerを使用してロギングなどを実行できるようですが、アプリは引き続き終了します。例外をログに記録し、ユーザーにアクションが失敗したことを伝え、ユーザーに続行させることができるものが必要です(別のことを試してください)。
ありがとう。
すべての「キャッチされていない」例外を1か所でキャッチして、アプリを続行させる方法はありますか?
setUncaughtExceptionHandlerを使用してロギングなどを実行できるようですが、アプリは引き続き終了します。例外をログに記録し、ユーザーにアクションが失敗したことを伝え、ユーザーに続行させることができるものが必要です(別のことを試してください)。
ありがとう。
いいえ、なぜあなたがそれを欲しがるのかわかりません。例外をスローすることがわかっているメソッドから例外をキャッチし、コードをテストして、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 を使用して)。リリース前にコードをテストして、できるだけバグのないようにします。