Java の例外処理メカニズム

WBOY
リリース: 2023-06-09 09:37:14
オリジナル
2007 人が閲覧しました

Java は美しくて読みやすいプログラミング言語ですが、開発プロセス中にエラーが発生することは避けられません。これらのエラーを解決するために、Java では例外処理メカニズムが導入されました。このメカニズムにより、プログラマはプログラムの実行中に問題を検出し、適切な措置を講じることができます。この記事では、例外をスロー、キャッチ、処理する方法など、Java の例外処理メカニズムについて説明します。

例外とは何ですか?

Exception は、プログラムの実行中にエラーが発生したことを示すイベントです。たとえば、ゼロによる除算、NULL ポインタ参照、または無効な入力が発生する可能性があります。 Java では、例外とは、プログラムの実行中に発生する問題を指します。この問題は、プログラムの通常の実行に影響を与え、プログラムを異常終了させます。

Java における例外の分類

Java における例外は、チェック例外と非チェック例外の 2 種類に分類できます。

  • チェックされた例外: コンパイル時にチェックする必要がある例外です。このような例外がコード内でスローされる可能性がある場合は、明示的に処理する必要があります。たとえば、IOException と SqlException はチェック例外です。
  • 未チェック例外: コードのコンパイル中にキャッチできない例外です。この例外は通常、プログラマーのエラーによって発生するか、Java ランタイムによって生成されます。たとえば、NullPointerException や ArrayIndexOutOfBoundsException などです。

例外をスローするにはどうすればよいですか?

プログラム内で問題が見つかった場合は、throw ステートメントを使用して例外をスローできます。

throw new Exception("发生异常了");
ログイン後にコピー

この例では、新しい Exception オブジェクトがスローされます。 throw ステートメントの後にカスタム例外クラスのオブジェクトが続く場合、指定された例外がスローされます。次の例は、例外をカスタマイズしてプログラムで使用する方法を示しています。

public class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}
ログイン後にコピー

プログラムでのカスタム例外の使用:

public void checkAge(int age) throws CustomException {
    if (age < 0 || age > 100) {
        throw new CustomException("年龄不在合法范围内");
    }
    //继续执行其他代码
}
ログイン後にコピー
ログイン後にコピー

上記の例では、年齢が 0 未満の場合、 100 を超えると、CustomException がスローされます。

例外をキャッチするにはどうすればよいですか?

例外を処理する方法の 1 つは、例外を「キャッチ」することです。 Java の try-catch ブロックは、例外をキャッチするために使用されます。

try {
    //需要尝试执行的代码
} catch (Exception e) {
    //处理异常的代码
}
ログイン後にコピー

この例では、例外をスローする可能性のあるコードはすべて try ブロックに配置できます。 try ブロック内のコードを実行するときに例外が発生すると、プログラムは catch ブロックにジャンプします。 catch ブロックでは、プログラマは例外を処理するために必要な手順を実行できます。以下は、try-catch ブロックの処理を示す簡単な Java プログラムです。

public static void main(String[] args) {
    try {
        int i = 1/0;
    } catch (Exception e) {
        System.out.println("发生异常了:" + e);
    }
}
ログイン後にコピー

上の例では、プログラムは 1 を 0 で除算しようとします。これは許可されていないため、ArithmeticException がスローされます。 catch ブロックはこの例外をキャッチし、「例外が発生しました: java.lang.ArithmeticException: / by zero」をコンソールに出力します。

例外を処理するにはどうすればよいですか?

例外を処理する 1 つの方法は、メソッドから直接例外をスローすることです。通常、これは呼び出し元によって捕捉され、処理されます。例外を処理するもう 1 つの方法は、 throws 句を含むメソッドを使用して、処理する必要がある例外を指定することです。以下に例を示します。

public void checkAge(int age) throws CustomException {
    if (age < 0 || age > 100) {
        throw new CustomException("年龄不在合法范围内");
    }
    //继续执行其他代码
}
ログイン後にコピー
ログイン後にコピー

メソッド シグネチャの後に指定された throws 句は、チェックされた例外をキャッチまたはスローする必要があることを呼び出し元に伝えます。呼び出し元がこの例外を処理しない場合、プログラムは終了し、例外メッセージを出力します。

例外を処理する別の方法は、finally ブロックを使用することです。 finally ブロック内のコードは、try ブロックと catch ブロックの後に実行され、例外が発生するかどうかに関係なく実行されます。

try {
    //需要尝试执行的代码
} catch (Exception e) {
    //处理异常的代码
} finally {
    //无论是否发生异常都会执行的代码
}
ログイン後にコピー

finally ブロックの使用例は、開いているファイルまたはネットワーク リソースを閉じることです。 Java ではこれらのリソースが制限されているため、解放するには必ずリソースを閉じる必要があります。

BufferedReader reader = null;
try {
    reader = new BufferedReader(new FileReader("文件名"));
    //对文件执行一些操作
} catch (Exception e) {
    //处理异常的代码
} finally {
    try {
        if (reader != null) {
            reader.close();
            reader = null;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
ログイン後にコピー

この例では、try ブロック内のコードがファイルを開き、いくつかの操作を実行します。 try ブロックでエラーが発生した場合、プログラムは catch ブロックにジャンプして例外を処理します。 try ブロックで例外が発生したかどうかに関係なく、finally ブロックのコードは開いているファイルを閉じます。

結論

Java の例外処理メカニズムを使用すると、プログラマはプログラムの実行中にエラーを検出し、適切な措置を講じることができます。この記事では、Java の例外分類、例外のスロー、例外のキャッチ、および例外の処理方法について詳しく説明し、いくつかの具体的な例を示します。 Java コードを作成する場合、プログラマはコードの安定性と信頼性を確保するためのベスト プラクティスに従う必要があります。

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

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