Java 例外 (例外) は、プログラムの実行中に発生するエラーまたは異常な状況を指します。Java 例外処理メカニズムを使用すると、例外が発生したときにプログラムが例外を処理して、プログラムのクラッシュや予期しないエラーを回避できます。
1. Java例外の概念
Java 例外とは、プログラムの実行中に発生するエラーまたは異常な状態を指します。Java 例外は、コンパイル時例外と実行時例外の 2 つのタイプに分類できます。
コンパイル時例外とは、存在しないファイルや存在しないメソッドなど、コンパイル中に検出できる例外を指します。コンパイル時の例外はプログラム内で処理する必要があります。処理しないとプログラムをコンパイルできません。
実行時例外とは、配列の範囲外、NULL ポインタ参照など、プログラムの実行中にのみ検出できる例外を指します。実行時例外を処理する必要はありませんが、処理しないとプログラムがクラッシュしたり、予期しないエラーが発生したりすることがあります。
2. Java例外の分類
Java 例外は、チェック済み例外、未チェック例外、エラーの 3 つのタイプに分類できます。
チェック例外は、プログラム内で処理する必要があるコンパイル時の例外を指します。処理しないとプログラムをコンパイルできません。チェック例外は通常、ファイルが存在しない、メソッドが存在しないなど、プログラマ自身が記述したコードによって発生します。
未チェック例外とは、処理する必要のない実行時例外を指しますが、処理しないとプログラムがクラッシュしたり、予期しないエラーが発生したりします。未チェック例外は通常、範囲外の配列、NULL ポインタ参照などのプログラマ エラーによって発生します。
エラーとは、プログラムでは処理できない重大なシステム エラーを指します。通常はシステム リソースの枯渇、仮想マシンのクラッシュなどが原因で発生します。
3. Java例外処理メソッド
Java 例外処理メカニズムを使用すると、例外が発生したときにプログラムが例外を処理して、プログラムのクラッシュや予期しないエラーを回避できます。Java 例外処理メカニズムには、try-catch-finally ステートメント、throw ステートメント、および throws ステートメントが含まれます。
- try-catch-finally ステートメント
try-catch-finally ステートメントは、例外をキャッチして処理するために使用されます。try ブロックには例外をスローする可能性のあるコードが含まれており、catch ブロックは例外をキャッチして処理するために使用され、finally ブロックはリソースの解放またはクリーンアップ操作の実行に使用されます。
try { // 例外をスローする可能性のあるコード} catch (Exception e) { // 例外処理コード}finally { // リソースを解放するか、クリーンアップ操作を実行します}
- throw ステートメント
throw ステートメントは手動で例外をスローするために使用されます。例外の種類をカスタマイズしてプログラムでスローすることができます。
public void test() throws Exception { throw new Exception("カスタム例外情報"); }
- ステートメントをスローします
throws ステートメントは、メソッドがスローする例外のタイプを宣言するために使用され、メソッド宣言で使用できます。
public void test() throws Exception { // 例外をスローする可能性のあるコード}
4. Java例外処理の注意事項
-
try-catch-finally ステートメントを多用しないようにし、例外をできる限り避けてください。
-
プログラムでは実行時例外をできる限り避け、コンパイル時例外またはカスタム例外を使用する必要があります。
-
例外を処理するときは、その後のデバッグと修復を容易にするために、例外情報をできるだけ詳細に記録する必要があります。
-
try-catch-finally ステートメントを使用する場合は、小さいものから大きいものまでの継承関係に従って、例外タイプをキャプチャして処理する必要があります。
-
throw ステートメントを使用する場合は、可能な限り Java の組み込み例外タイプを使用し、カスタム例外タイプの使用を避ける必要があります。
要約する
Java 例外は、プログラムの実行中に発生するエラーまたは異常な状態です。Java 例外は、コンパイル時例外と実行時例外の 2 つのタイプに分類できます。Java 例外処理メカニズムを使用すると、例外が発生したときにプログラムが例外を処理して、プログラムのクラッシュや予期しないエラーを回避できます。例外を処理するときは、その後のデバッグと修復を容易にするために、例外情報をできるだけ詳細に記録する必要があります。