問題タブ [uncaughtexceptionhandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - UncaughtExceptionHandler が例外メッセージを変更する
小さな例:
期待どおりに以下を出力します。
このプログラムを変更しましょう:
版画:
質問:
メッセージが発生した場所に関する情報が含まれておらず、スタック トレース、メッセージがないのはなぜですか?
私にとっては、例外メッセージは奇妙に見えます。
java - 安全にキャッチできる java.lang.Error の子孫はどれですか?
通常、Java プログラムは-s likeをキャッチThrowable
しているため、 をキャッチすべきではないということは、私にはまったく明らかです。100%クリア。Error
OutOfMemoryError
しかし。
マルチスレッド アプリケーションを使用している場合、通常はベストUncaughtExceptionHandler
プラクティスRuntimeException
ですError
。私が通常やりたいことは、単にログを記録することです。ロギングRuntimeExceptions
は本当に害になることはありません。それは明らかです。しかし、私の中で疑問が生じます:
UncaughtExceptionHandler で安全にキャッチしてログに記録できるエラーのうち、ログに記録するとアプリケーション全体が処理されないエラーはどれですか? アプリケーションをすぐに停止する必要があるという意味ではない、どのエラーがありますか?
たとえば、 を取得した場合、ログに記録するために必要なメモリによって他のスレッドが強制終了される可能性があるため、標準出力に をOutOfMemoryError
要求するだけです。printStackTrace
しかし、現在のスレッドのスタック領域がいっぱいになったことを単純に意味するため、StackOverflowError
ログに記録しても完全に安全だと思われます。ログに記録することは安全です。他にどのError
子孫をログに記録しますか?
java - ExceptionHandler サブクラスからアプリケーションを安全に終了できますか?
私はJavaだけでなくAndroidも初めてです。できるだけ具体的になるように最善を尽くします。
ExceptionHandler
default を実装するサブクラスとともに、1 つのアクティビティと複数のフラグメントとクラスを持つアプリがありますUncaughtExceptionHandler
。私は正常に使用できました:-
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
未処理の例外が発生した場合に、"ForceClose"
ポップアップを表示せずにアプリケーションを終了します。私は使用しますSystem.exit(0)
。アプリケーション全体でログを記録しています。ExceptionHandler サブクラスからの例外をログに記録できます。
さて、私の問題はonPause()
、onStop()
アプリケーションonDestroy()
がMainActivity
.
ExceptionHandler
サブクラスを使用してアプリケーションを終了するときにこれを行うにはどうすればよいですか?