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

Java で Catch を試す:例外処理の例

Java の例外とは?

Java の例外 プログラム命令の実行を中断し、プログラム実行の通常の流れを妨害するイベントです。メソッド内で発生したエラーイベント情報をラップしてランタイムシステムに渡すオブジェクトです。 Java では、例外は主にさまざまな種類のエラー状態を示すために使用されます。

このチュートリアルでは、次のことを学びます-

エラーには次の 2 種類があります:

<オール>
  • コンパイル時エラー
  • 実行時エラー
  • コンパイル時エラーは、再び 2 つのタイプに分類できます。

    構文エラーの例:

    int a; を宣言する代わりに 誤って in a; と宣言しました どのコンパイラがエラーをスローするか。

    例:変数 int a; を宣言しました そして数行のコードの後、再び整数を int a; として宣言します .コードをコンパイルすると、これらすべてのエラーが強調表示されます。

    実行時エラーの例

    実行時エラーは 例外 と呼ばれます エラー。通常のプログラム実行フローを中断するイベントです。

    例外の例は、算術例外、Nullpointer 例外、ゼロ除算例外などです。

    Java の例外は、開発者が制御できないものです。

    ビデオにアクセスできない場合は、ここをクリックしてください

    なぜ例外が必要なのですか?

    サーバーにアクセスするプログラムをコーディングしたとします。コードを開発している間、問題なく動作しました。

    実際の本番稼働中は、サーバーがダウンしています。プログラムがアクセスしようとすると、例外が発生します。

    例外の処理方法

    これまで見てきたように、例外は開発者の制御を超えています。しかし、コードの失敗を環境問題のせいにすることは解決策ではありません。例外的な状況に対処する堅牢なプログラミングが必要です。このようなコードは、Exception Handler として知られています。

    この例では、適切な例外処理は、サーバーがダウンしたときにバックアップ サーバーに接続することです。

    これを実装するには、コードを入力してサーバーに接続します (従来の if および else 条件を使用)。

    サーバーがダウンしているかどうかを確認します。はいの場合は、バックアップ サーバーに接続するためのコードを記述してください。

    このような「if」ループと「else」ループを使用したコードの編成は、コードに複数の Java 例外を処理する場合には効果的ではありません。

    class connect{
    	if(Server Up){
    	 // code to connect to server
    	}
    	else{
    	 // code to connect to BACKUP server
    	}
    }
    

    キャッチブロックを試す

    Java は組み込みの例外処理を提供します。

    <オール>
  • 通常のコードは TRY に入ります ブロックします。
  • 例外処理コードは CATCH に入ります ブロック
  • この例では、TRY ブロックにサーバーに接続するためのコードが含まれます。 CATCH ブロックには、バックアップ サーバーに接続するためのコードが含まれます。

    サーバーが起動している場合、CATCH ブロック内のコードは無視されます。サーバーがダウンしている場合、例外が発生し、catch ブロック内のコードが実行されます。

    したがって、これが Java での例外の処理方法です。

    try &catch を使用するための構文

    try{
        statement(s)
    }
    catch (exceptiontype name){
    	statement(s)
    }
    

    ステップ 1) 次のコードをエディターにコピーします

    class JavaException {
       public static void main(String args[]){
          int d = 0;
          int n = 20;
          int fraction = n/d;
         System.out.println("End Of Main");
       }
    }

    ステップ 2) ファイルを保存してコードをコンパイルします。コマンド java JavaException を使用してプログラムを実行します

    ステップ 3) 算術例外 – 以下のように行番号 5 でゼロ除算が示され、行番号 6 は実行されません

    ステップ 4) 次に、try と catch がこの例外の処理にどのように役立つかを調べてみましょう。コード行の原因となった例外を try に入れます。 ブロック、その後に キャッチ ブロック。次のコードをエディターにコピーします。

    class JavaException {
     public static void main(String args[]) {
      int d = 0;
      int n = 20;
      try {
       int fraction = n / d;
       System.out.println("This line will not be Executed");
      } catch (ArithmeticException e) {
       System.out.println("In the catch Block due to Exception = " + e);
      }
      System.out.println("End Of Main");
     }
    }

    ステップ 5) コードを保存、コンパイル、実行します。次の出力が得られます

    ご覧のとおり、例外が処理され、コードの最後の行も実行されます。また、例外が発生するとすぐに制御フローが catch ブロックにジャンプするため、7 行目は実行されないことに注意してください。

    注: AritmeticException オブジェクト「e」は、発生した例外に関する情報を保持します。これは、回復アクションを実行する際に役立ちます。

    Java 例外クラス階層

    1 つの catch ステートメントが実行されると、他のステートメントはバイパスされ、try/catch ブロックの後に実行が続行されます。ネストされた catch ブロックは例外階層に従います。

    例: try および catch ブロックのネストを理解する

    ステップ 1) 次のコードをエディターにコピーします。

    class JavaException {
     public static void main(String args[]) {
      try {
       int d = 1;
       int n = 20;
       int fraction = n / d;
       int g[] = {
        1
       };
       g[20] = 100;
      }
      /*catch(Exception e){
      	System.out.println("In the catch block due to Exception = "+e);
      }*/
      catch (ArithmeticException e) {
       System.out.println("In the catch block due to Exception = " + e);
      } catch (ArrayIndexOutOfBoundsException e) {
       System.out.println("In the catch block due to Exception = " + e);
      }
      System.out.println("End Of Main");
     }
    }
    

    ステップ 2) ファイルを保存してコードをコンパイルします。コマンド java JavaException を使用してプログラムを実行します .

    ステップ 3) ArrayIndexOutOfBoundsException が生成されます。 int d の値を 0 に変更します。コードを保存、コンパイル、実行します。

    ステップ 4 ) ArithmeticException を生成する必要があります。

    ステップ 5) 10 行目から 12 行目までのコメントを外します。コードを保存、コンパイル、実行します。

    ステップ 6) コンパイル エラーですか? これは、Exception が ArithmeticException Exception の基底クラスであるためです。 ArithmeticException によって発生した例外は、例外クラスでも処理できます。そのため、ArithmeticException の catch ブロックは実行される機会がなく、冗長になります。したがって、コンパイル エラーです。

    Java ファイナリー ブロック

    finally ブロックは発生する例外に関係なく実行されます try ブロックで。 オプションです try ブロックで使用します。

     try {
      statement(s)
     } catch (ExceptiontType name) {
    
      statement(s)
    
     } finally {
    
      statement(s)
    
     }
    

    try ブロックで例外が発生した場合、catch ブロックが実行された後、finally ブロックが実行されます。

    ステップ 1) 次のコードをエディターにコピーします。

    class JavaException {
       public static void main(String args[]){
        try{
           int d = 0;
           int n =20;
           int fraction = n/d;
        }
      catch(ArithmeticException e){
        System.out.println("In the catch block due to Exception = "+e);
      }
      finally{
    	System.out.println("Inside the finally block");
      }
    }
    }

    ステップ 2) コードを保存、コンパイル、実行します。

    ステップ 3) 期待される出力。最後に、例外が発生してもブロックが実行されます。

    ステップ 4) 変数 d =1 の値を変更します。コードを保存、コンパイル、実行し、出力を確認します。フォームの下部

    まとめ :


    Java

    1. try、except、finally ステートメントを使用した Python 例外処理
    2. Java 例外処理
    3. Java トライ...キャッチ
    4. Javaは複数の例外をキャッチします
    5. C++ 例外処理:Try、Catch、throw の例
    6. Java String charAt() メソッドと例
    7. 例を使用したJava文字列のendsWith()メソッド
    8. Java BufferedReader:例を使用して Java でファイルを読み取る方法
    9. プログラム例を使用した Java の挿入ソート アルゴリズム
    10. Python の例外処理:try、catch、finally、raise [例]
    11. Java 9 - リソースの改善を試す