私は IT のプロジェクト マネージャーであり、開発者と何度も同じ議論をしてきましたが、彼らはまったく気にしません。ネットを徘徊していると、ほとんどの人がRuntimExceptionをキャッチしてスローすることを提唱しています...それを見るたびに、私は10年間の経験の無能さに信じられないほど激怒します....
ルール 1:
RuntimeException をキャッチしなかった場合は、Program で runtimeException をスローしないでください。
ルール 2:
ソフトウェアとは関係のないものを実際にインポートするために、Runtimeexception のみをキャッチします。たとえば、オペレーションの緊急シフトにメールを送信し、例外を記録し、サーバーを再起動します。
これは、優れたソフトウェアでは、ログファイルにスタック トレースがないためです。コーディングを開始するのが面倒な場合は、次のようにします。
新しいクラス DevelopmentException 拡張例外を作成します。次に、先に進んでコードを記述し、最初に例外をキャッチします。次に、それを独自の開発例外として再スローします。それをキャッチするメソッドで、ログに記録します。
今: 非常に個人的な DevelopmentException の毎日の grep。見つかった場合は、まだやるべきことがあるということです。コードに移動し、例外がどこから来たのかを確認し、事前にキャッチします。
理想的には、プログラムのこの部分で DevelopmentException が再び表示されることはありません。ソフトウェアに残っているスタックトレースが 0 になり、例外処理が完了するまで繰り返します。
実行時例外のスローとキャッチに関する最大の問題は、コンパイルがそれを無視することです。つまり、同僚の 1 人が予約インターフェイスを作成し、値が欠落しているときに RuntimeException をスローした場合 (そうです、実際にそうです)... ...コンパイラは、runtimeexception が存在する可能性があることを表示しません。現在、それをキャッチしないと、プログラムはログなしでシャットダウンする可能性があります。
なぜ RuntimeException と呼ばれるのですか? 多くの人はこれをプログラムのランタイム中のエラーと間違えますが、実際には「Java ランタイム環境を停止する必要があるほど破壊的な例外」を意味します。つまり、OutOfMemory、BrokenRam、JRE の FaultyImplementation など...基本的には、PC がクラッシュしているため、プログラムを実行できません....
ちょうど私の2セント。同じことを経験した人はいますか?
PS:スタックトレースの継続的な削除について:
例外を見つけたら、NullpointerException などでキャッチしてみてください。Nullpointerexception が表示されたら、コードに移動してスタックトレースを削除し、log.WARN(NullpointerOccured) を作成して、再試行するプログラムを作成します...
Stacktrace が表示されなくなるまで繰り返すのが理想的です。スタックトレースが表示されない場合は、問題が発生する可能性があるすべてが処理されたことを意味します(もちろん、RuntimeException を除く)。