工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java 例外処理

Java 例外処理

このチュートリアルでは、例を使って Java での例外処理のさまざまなアプローチについて学びます。

前回のチュートリアルでは、Java の例外について学びました。例外がプログラムの実行を異常終了させることはわかっています。

これが、例外を処理することが重要な理由です。 Java で例外を処理するためのさまざまなアプローチのリストを次に示します。


1. Java try...catch ブロック

try-catch ブロックは、Java で例外を処理するために使用されます。 try...catch の構文は次のとおりです。 ブロック:

try {
  // code
}
catch(Exception e) {
  // code
}

ここでは、例外を生成する可能性のあるコードを try 内に配置しました。 ブロック。 tryごと ブロックの後には catch が続きます ブロックします。

例外が発生すると、catch によってキャッチされます ブロック。 catch ブロックは try なしでは使用できません ブロックします。

例:try...catch を使用した例外処理

class Main {
  public static void main(String[] args) {

    try {

      // code that generate exception
      int divideByZero = 5 / 0;
      System.out.println("Rest of code in try block");
    }
    
    catch (ArithmeticException e) {
      System.out.println("ArithmeticException => " + e.getMessage());
    }
  }
}

出力

ArithmeticException => / by zero

この例では、数値を 0 で割ろうとしています .ここで、このコードは例外を生成します。

例外を処理するために、コード 5 / 0 を入れました。 try の中 ブロック。例外が発生すると、 try 内の残りのコードは ブロックはスキップされます。

catch ブロックが例外をキャッチし、catch ブロック内のステートメントが実行されます。

try 内のステートメントがない場合 ブロックは例外 catch を生成します ブロックはスキップされます。


2. Javaがついにブロック

Java では、finally ブロックは、例外の有無にかかわらず常に実行されます。

finally ブロックはオプションです。そして、try ごとに finally は 1 つだけです。 ブロックします。

finally の基本構文 ブロックは:

try {
  //code
}
catch (ExceptionType1 e1) { 
  // catch block
}
finally {
  // finally block always executes
}

例外が発生した場合、finally ブロックは try...catch の後に実行されます ブロック。それ以外の場合は、try ブロックの後に実行されます。 tryごとに ブロック、finally は 1 つしか存在できません ブロックします。


例:finally ブロックを使用した Java 例外処理

class Main {
  public static void main(String[] args) {
    try {
      // code that generates exception
      int divideByZero = 5 / 0;
    }

    catch (ArithmeticException e) {
      System.out.println("ArithmeticException => " + e.getMessage());
    }
    
    finally {
      System.out.println("This is the finally block");
    }
  }
}

出力

ArithmeticException => / by zero
This is the finally block

上記の例では、数値を 0 で割っています。 try の中 ブロック。ここで、このコードは ArithmeticException を生成します .

例外は catch によってキャッチされます ブロック。そして、finally ブロックが実行されます。

注意 :finally を使用することをお勧めします ブロック。これは、

のような重要なクリーンアップ コードを含めることができるためです。

3. Java の throw と throws キーワード

Java throw キーワードは、単一の例外を明示的にスローするために使用されます。

throw 例外として、プログラムの流れは try から移動します catch へのブロック ブロックします。

例:Java throw を使用した例外処理

class Main {
  public static void divideByZero() {

    // throw an exception
    throw new ArithmeticException("Trying to divide by 0");
  }

  public static void main(String[] args) {
    divideByZero();
  }
}

出力

Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
        at Main.divideByZero(Main.java:5)
        at Main.main(Main.java:9)

上記の例では、明示的に ArithmeticException をスローしています。 throw を使用して キーワード。

同様に、throws キーワードは、メソッド内で発生する可能性のある例外の種類を宣言するために使用されます。メソッド宣言で使用されます。

例:Java がキーワードをスローする

import java.io.*;

class Main {
  // declareing the type of exception
  public static void findFile() throws IOException {

    // code that may generate IOException
    File newFile = new File("test.txt");
    FileInputStream stream = new FileInputStream(newFile);
  }

  public static void main(String[] args) {
    try {
      findFile();
    }
    catch (IOException e) {
      System.out.println(e);
    }
  }
}

出力

java.io.FileNotFoundException: test.txt (The system cannot find the file specified)

このプログラムを実行すると、ファイル test.txt 存在しません、FileInputStream FileNotFoundException をスローします IOException を拡張します クラス。

findFile() メソッドは IOException を指定します 投げることができます。 main() メソッドはこのメソッドを呼び出し、例外がスローされた場合はそれを処理します。

メソッドが例外を処理しない場合、その中で発生する可能性のある例外の種類を throws で指定する必要があります

詳細については、Java のスローとスローにアクセスしてください。


Java

  1. Java オペレーター
  2. Java コメント
  3. Java for-each ループ
  4. Java 文字列
  5. Java インターフェイス
  6. Java匿名クラス
  7. Java トライ...キャッチ
  8. Java try-with-resources
  9. Java アノテーション
  10. Java アサーション
  11. Javaの静的変数:静的ブロック&メソッドとは【例】