通常、Java プログラムは-s likeをキャッチThrowable
しているため、 をキャッチすべきではないということは、私にはまったく明らかです。100%クリア。Error
OutOfMemoryError
しかし。
マルチスレッド アプリケーションを使用している場合、通常はベストUncaughtExceptionHandler
プラクティスRuntimeException
ですError
。私が通常やりたいことは、単にログを記録することです。ロギングRuntimeExceptions
は本当に害になることはありません。それは明らかです。しかし、私の中で疑問が生じます:
UncaughtExceptionHandler で安全にキャッチしてログに記録できるエラーのうち、ログに記録するとアプリケーション全体が処理されないエラーはどれですか? アプリケーションをすぐに停止する必要があるという意味ではない、どのエラーがありますか?
たとえば、 を取得した場合、ログに記録するために必要なメモリによって他のスレッドが強制終了される可能性があるため、標準出力に をOutOfMemoryError
要求するだけです。printStackTrace
しかし、現在のスレッドのスタック領域がいっぱいになったことを単純に意味するため、StackOverflowError
ログに記録しても完全に安全だと思われます。ログに記録することは安全です。他にどのError
子孫をログに記録しますか?