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

Java トライ...キャッチ

Java try...catch

このチュートリアルでは、例を使用して Java の try catch ステートメントについて学習します。

try...catch Java のブロックは、例外を処理するために使用され、プログラムの異常終了を防ぎます。

try...catch の構文は次のとおりです。 Java でブロックします。

try{
  // code
}
catch(exception) {
  // code
}

try ブロックには、例外を生成する可能性のあるコードが含まれています。

catch ブロックには、try 内で例外が発生したときに実行されるコードが含まれます。 ブロックします。

例:Java の try...catch ブロック

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

    try {
      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

上記の例では、

int divideByZero = 5 / 0;

ここでは、数値を ゼロ で割ろうとしています .この場合、例外が発生します。したがって、このコードを try で囲みました。 ブロックします。

プログラムがこのコードに遭遇すると、 ArithmeticException 発生します。そして、例外は catch によってキャッチされます catch 内のコードをブロックして実行します ブロックします。

catch ブロックは try 内に例外が存在する場合にのみ実行されます ブロックします。

注意 :Java では、try を使用できます。 catch のないブロック ブロック。ただし、catch は使用できません。 try のないブロック ブロックします。


Java の試行...最終的にブロック

try も使用できます finally ブロックと一緒にブロックします。

この場合、try ブロック内に例外があるかどうかにかかわらず、finally ブロックは常に実行されます。

例:Java try...finally ブロック

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

    finally {
      System.out.println("Finally block is always executed");
    }
  }
}

出力

Finally block is always executed
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Main.main(Main.java:4)

上記の例では、try を使用しています。 finally とともにブロックします ブロック。 try 内のコードが ブロックが例外を引き起こしています。

ただし、 finally 内のコードは ブロックは例外に関係なく実行されます。


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

Java では、try...catch の後に finally ブロックを使用することもできます。 ブロック。たとえば、

import java.io.*;

class ListOfNumbers {

  // create an integer array
  private int[] list = {5, 6, 8, 9, 2};

  // method to write data from array to a fila
  public void writeList() {
    PrintWriter out = null;

    try {
      System.out.println("Entering try statement");

      // creating a new file OutputFile.txt
      out = new PrintWriter(new FileWriter("OutputFile.txt"));

      // writing values from list array to Output.txt
      for (int i = 0; i < 7; i++) {
        out.println("Value at: " + i + " = " + list[i]);
      }
    }
    
    catch (Exception e) {
      System.out.println("Exception => " + e.getMessage());
    }
    
    finally {
      // checking if PrintWriter has been opened
      if (out != null) {
        System.out.println("Closing PrintWriter");
        // close PrintWriter
        out.close();
      }
      
      else {
        System.out.println("PrintWriter not open");
      }
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

出力

Entering try statement
Exception => Index 5 out of bounds for length 5
Closing PrintWriter

上記の例では、list という名前の配列を作成しました。 output.txt という名前のファイル .ここでは、配列からデータを読み取り、ファイルに保存しようとしています。

コードに注目してください。

for (int i = 0; i < 7; i++) {
  out.println("Value at: " + i + " = " + list[i]);
}

ここで、配列のサイズは 5 です 配列の最後の要素は list[4] にあります .ただし、a[5] の要素にアクセスしようとしています。 と a[6] .

したがって、コードは catch ブロックによってキャッチされる例外を生成します。

finally 以降 ブロックは常に実行されます。PrintWriter を閉じるコードが含まれています。 finally ブロック内。

ファイルや接続を閉じるなどの重要なクリーンアップ コードを含めるには、finally ブロックを使用することをお勧めします。

注意 :finally ブロックは実行されません:


複数のキャッチ ブロック

try ごとに ブロック、0 個以上の catch が存在する可能性があります ブロック。複数の catch ブロックを使用すると、各例外を異なる方法で処理できます。

catch の引数の型 block は、それによって処理できる例外のタイプを示します。たとえば、

class ListOfNumbers {
  public int[] arr = new int[10];

  public void writeList() {

    try {
      arr[10] = 11;
    }
    
    catch (NumberFormatException e1) {
      System.out.println("NumberFormatException => " + e1.getMessage());
    }
    
    catch (IndexOutOfBoundsException e2) {
      System.out.println("IndexOutOfBoundsException => " + e2.getMessage());
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

出力

IndexOutOfBoundsException => Index 10 out of bounds for length 10

この例では、arr という名前の整数配列を作成しました。 サイズ 10 .

配列のインデックスは 0 から始まるため 、配列の最後の要素は arr[9] にあります .声明に注目してください、

arr[10] = 11;

ここでは、インデックス 10 に値を割り当てようとしています .したがって、IndexOutOfBoundException

try で例外が発生した場合 ブロック、


複数の例外のキャッチ

Java SE 7 以降では、1 つの catch で複数の種類の例外をキャッチできるようになりました。 ブロックします。

これにより、コードの重複が減り、コードの簡素化と効率が向上します。

catch で処理できる各例外タイプ ブロックは縦棒 | で区切られています .

その構文は次のとおりです:

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

詳細については、複数の例外をキャッチする Java を参照してください。


Java try-with-resources ステートメント

試用リソース statement は、1 つ以上のリソース宣言を持つ try ステートメントです。

その構文は次のとおりです:

try (resource declaration) {
  // use of the resource
} catch (ExceptionType e1) {
  // catch block
}

リソースは、プログラムの最後に閉じられるオブジェクトです。これは、try ステートメントで宣言および初期化する必要があります。

例を見てみましょう。

try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) {
  // use of the resource
}

試用リソース このステートメントは、自動リソース管理とも呼ばれます .このステートメントは、ステートメントの最後ですべてのリソースを自動的に閉じます。

詳細については、Java の try-with-resources ステートメントを参照してください。


Java

  1. Java オペレーター
  2. Java コメント
  3. Java for-each ループ
  4. Java 文字列
  5. Java インターフェイス
  6. Java匿名クラス
  7. Java 例外処理
  8. Javaは複数の例外をキャッチします
  9. Java try-with-resources
  10. Java アノテーション
  11. Java アサーション