Java での例外処理

WBOY
リリース: 2024-07-24 10:52:41
オリジナル
948 人が閲覧しました

Exception Handling In Java

Java コードまたはプログラムを実行すると、コンパイルして実行されるか、エラーがスローされます。コードが をスローする場合、それはエラーまたは例外の結果です。

エラーはより重大です。これはコードの範囲外で、アプリケーションが実行されている環境内で発生します。プログラムはエラーをキャッチして処理することは期待されていません。

エラーの例は次のとおりです

  • メモリ不足エラー
  • 仮想マシンエラー
  • スタックオーバーフローエラー

例外はコードのスコープ内で発生します。これは実行エラーとも呼ばれ、コードの実行中に発生することを意味します。プログラマは、プログラム内の例外をキャッチして処理することが期待されています。

この投稿では、特に例外と実行時エラーに焦点を当てます。例外と、Java プログラムで例外エラーを処理する方法についてすべて学びます。

Java の実行エラーの種類

Java には 3 種類の実行エラーがあります。それぞれの内訳は次のとおりです

。コンパイル時エラー

このタイプのエラーは、コンパイル エラーまたはチェック エラーとして知られています。 Java プログラムはコンパイル段階でこのコードをスローします。

言い換えると、このエラーは Javac コードがバイトコードにコンパイルされるときに発生します。コンパイル時エラーは通常、コード構文のエラーによって発生します。

たとえば、プログラマがステートメントの最後にセミコロンを追加しなかったり、印刷前に変数を初期化できなかった場合です。

public class JavaExceptionCodes {
    public static void main (String []args){
        int y = 10      //no semicolon
        System.out.println(y);
    }

}
ログイン後にコピー

。実行時エラー

実行時エラーは、例外エラーまたは未チェックエラーとも呼ばれます。プログラムの実行中に発生します。コードはコンパイルされますが、実行時にエラーがスローされます。

実行時エラーは、組み込み例外とユーザー定義例外にさらに分類できます。組み込み例外の例は次のとおりです。

  • ArrayIndexOutOfBoundsException
  • 算術例外
  • FileNotFoundException
  • NullPointerException

たとえば、ユーザーが文字列の代わりに int を入力したり、配列のサイズより大きな値を挿入した場合です。

public class JavaExceptionCodes {
    public static void main (String []args) {
        int nombas[] = {1, 2, 3, 4, 5};
        System.out.println(nombas[6]); 

    }
}
//ArrayIndexOutOfBoundsException
ログイン後にコピー

。論理エラー

セマンティック エラーとも呼ばれ、プログラムの論理出力にエラーがある場合に発生します。たとえば、3 + 3 は出力 7 を示します。または、アカウントにログインして別のプロファイルに移動した場合です。

コンパイル時エラーは、IDE が常にプログラマにこのエラーを指摘するため、最も簡単に見つけることができます。論理エラーは、コードがコンパイル時エラーや実行時エラーをスローしないため、ほとんどの場合、最も見つけにくいエラーです。

例外処理の概念

例外処理は、プログラム内のエラーを捕捉し、プログラムの通常の実行フローを維持するために使用されます。通常、プログラムがエラーをスローすると、コードは実行を停止します。

エラーを事前にキャッチして処理すると、プログラムはエラーのあるコードのブロックをスキップし、プログラムの残りの部分の実行を継続できます。

例外処理メソッド:

Try – Catch – Finally – Throw – Throws は、Java の例外処理メソッドのリストです。それぞれを例を挙げて詳しく見てみましょう:

。試す

Try は、例外をスローする可能性のあるコードの行またはブロックを囲むために使用されます。内部の try ブロックを持つ try である、ネストされた try もあります。これらは同じ目的を果たします。

構文

try{

}
ログイン後にコピー

。キャッチ

catch は、try ブロックでスローされたエラーをキャッチするために使用されるコードのブロックです。

構文

try{

}
catch (Exception e){

}
ログイン後にコピー

複数の catch ブロック

public class JavaExceptionCodes {
    public static void main (String []args) {
        int x = 10;
        int y = 0;
        int z ;
        int nombas [] = {5, 6, 7, 8, 9};
        try {
            System.out.println(z = x / y);
            System.out.println(nombas[6]);
        }
        catch (ArithmeticException e){
            System.out.println("Can't divide by 0. Choose another number" + e);
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Array Out Of Bound" + e);
        }
        System.out.println("End");
    }
}
ログイン後にコピー

。ついに

最後に、オプションのコード ブロックで、通常は try および catch コード ブロックの後に配置されます。重要なコードを実行するために使用されます。 Finally ブロックは、プログラムがエラーをスローするかどうかに関係なく、常に実行されます。

構文

try{

}
catch (Exception e){

}
finally{

}
ログイン後にコピー

。投げる

Throw は、メソッドまたはコード ブロック内で例外をスローするために使用されるキーワードです。

構文

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

           try { throw new ArithmeticException("Try Run");
           }
           catch (ArithmeticException e){
               System.out.println("Catch Exception Error");
           }

    }
}
ログイン後にコピー

。投げる

throw キーワードとは異なり、throws キーワードは例外をスローするために使用されません。ただし、メソッドに例外が存在する可能性があることが指定されています。 Throws はメソッド内ではなく、メソッド シグネチャ内で使用されます。

例外処理のベストプラクティス

  1. try ブロックには複数のステートメント (コード行) を含めることができます。各ステートメントのエラーをキャッチするには、複数の catch ブロックを作成するのが最善です。

  2. 複数の catch ブロックを使用する場合は、常に例外のタイプを指定します。

  3. try ブロック内に複数のステートメントがあり、エラーのあるステートメントがわからない場合は、他の例外の最後に最後の一般例外を作成して、未知のエラーをキャッチします。

  4. 一般例外キャッチ ブロックは、常に他のカスタム例外キャッチ ブロックの最後に配置します。

以上がJava での例外処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート