logo

Java での例外処理

  1. 例外処理
  2. 例外処理の利点
  3. 例外クラスの階層
  4. 例外の種類
  5. 例外の例
  6. 例外が発生する可能性があるシナリオ

Java での例外処理 有力者の一人です 実行時エラーを処理するメカニズム これにより、アプリケーションの通常のフローが維持されます。

このチュートリアルでは、Java 例外、その種類、チェック済み例外とチェックなし例外の違いについて学びます。

Javaのstring.format

Javaの例外とは何ですか?

辞書の意味: 例外とは異常な状態のことです。

Java では、例外はプログラムの通常のフローを中断するイベントです。実行時にスローされるオブジェクトです。

例外処理とは何ですか?

例外処理は、ClassNotFoundException、IOException、SQLException、RemoteException などの実行時エラーを処理するメカニズムです。

例外処理の利点

例外処理の主な利点は次のとおりです。 アプリケーションの通常の流れを維持するため 。通常、例外はアプリケーションの通常のフローを中断します。だからこそ例外を処理する必要があるのです。シナリオを考えてみましょう。

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Java プログラムに 10 個のステートメントがあり、ステートメント 5 で例外が発生したとします。コードの残りの部分は実行されません。つまり、ステートメント 6 から 10 は実行されません。ただし、例外処理を実行すると、残りのステートメントが実行されます。このため、例外処理を使用します。 ジャワ

あなたは知っていますか?
  • チェック例外とチェックなし例外の違いは何ですか?
  • コード int data=50/0; の背後では何が起こっていますか?
  • なぜ複数の catch ブロックを使用するのでしょうか?
  • finallyブロックが実行されない可能性はありますか?
  • 例外の伝播とは何ですか?
  • throw と throws キーワードの違いは何ですか?
  • メソッドのオーバーライドで例外処理を使用するための 4 つのルールは何ですか?

Java例外クラスの階層

java.lang.Throwable クラスは、Exception と Error という 2 つのサブクラスによって継承される Java 例外階層のルート クラスです。 Java 例外クラスの階層を以下に示します。

例外処理の階層

Java例外の種類

例外には主に、チェック済みとチェックなしの 2 種類があります。エラーは未チェックの例外とみなされます。ただし、Oracle によると、次の 3 種類の例外があります。

  1. チェックされた例外
  2. 未チェックの例外
  3. エラー
例外処理の階層

チェック済み例外とチェックなし例外の違い

1) チェックされた例外

RuntimeException と Error を除く、Throwable クラスを直接継承するクラスは、チェック例外と呼ばれます。たとえば、IOException、SQLException などです。チェックされた例外はコンパイル時にチェックされます。

2) チェックされていない例外

RuntimeException を継承するクラスは、未チェック例外として知られています。たとえば、ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException などです。未チェックの例外はコンパイル時にチェックされませんが、実行時にチェックされます。

3) エラー

エラーは回復不可能です。エラーの例としては、OutOfMemoryError、VirtualMachineError、AssertionError などがあります。

Java例外キーワード

Java には、例外を処理するために使用される 5 つのキーワードが用意されています。次の表でそれぞれについて説明します。

キーワード説明
試す「try」キーワードは、例外コードを配置するブロックを指定するために使用されます。つまり、try ブロックを単独で使用することはできません。 try ブロックの後には、catch またはfinally のいずれかが続く必要があります。
キャッチ「catch」ブロックは例外を処理するために使用されます。 try ブロックを前に置く必要があります。つまり、catch ブロックを単独で使用することはできません。後で、finally ブロックを続けることができます。
ついに「finally」ブロックは、プログラムの必要なコードを実行するために使用されます。例外が処理されるかどうかに関係なく実行されます。
投げる「throw」キーワードは、例外をスローするために使用されます。
投げる「throws」キーワードは例外を宣言するために使用されます。メソッド内で例外が発生する可能性があることを指定します。例外はスローされません。これは常にメソッド シグネチャとともに使用されます。

Java例外処理の例

try-catch ステートメントを使用して例外を処理する Java 例外処理の例を見てみましょう。

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
今すぐテストしてください

出力:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

上記の例では、100/0 によって ArithmeticException が発生し、try-catch ブロックによって処理されます。

Java 例外の一般的なシナリオ

未チェックの例外が発生する可能性のあるシナリオがいくつかあります。それらは次のとおりです。

1) ArithmeticException が発生するシナリオ

数値をゼロで除算すると、ArithmeticException が発生します。

 int a=50/0;//ArithmeticException 

2) NullPointerExceptionが発生するシナリオ

いずれかの値に null 値がある場合 変数 、変数に対して何らかの操作を実行すると、NullPointerException がスローされます。

 String s=null; System.out.println(s.length());//NullPointerException 

3) NumberFormatException が発生するシナリオ

変数または数値の形式が一致しない場合、NumberFormatException が発生する可能性があります。あるとします。 文字を含む変数。この変数を数字に変換すると、NumberFormatException が発生します。

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) ArrayIndexOutOfBoundsException が発生するシナリオ

配列がそのサイズを超えると、ArrayIndexOutOfBoundsException が発生します。 ArrayIndexOutOfBoundsException が発生する他の理由が考えられます。次のステートメントを考えてみましょう。

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Java例外インデックス

  1. Java Try-Catch ブロック
  2. Java 複数キャッチ ブロック
  3. Java ネストされた試行
  4. Java の最終ブロック
  5. Java スローキーワード
  6. Java例外の伝播
  7. Java スローキーワード
  8. Java スローとスロー
  9. Java Final 対 Final 対 Finalize
  10. メソッドのオーバーライドを使用した Java 例外処理
  11. Java カスタム例外