#11 Javaで学ぶエラーハンドリングの基本

Javaのエラーハンドリングは「例外」という仕組みを使い、種類ごとに細かく対処できるのが特徴です。この記事では、Javaにおけるエラーハンドリングの基本を解説します。

try・catchの基本

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("0では割れません");
}

複数の例外を扱う

catchは複数書くことができ、エラーの種類ごとに対応を分けられます。

try {
    // 何らかの処理
} catch (ArithmeticException e) {
    System.out.println("計算エラー");
} catch (Exception e) {
    System.out.println("その他のエラー: " + e.getMessage());
}

finallyという必ず実行される部分

try {
    // 何らかの処理
} finally {
    System.out.println("処理が終わりました");
}

チェック例外という独自の仕組み

Javaには「チェック例外」という、発生する可能性のある例外をあらかじめ関数の宣言に書いておかなければならない、独自の仕組みがあります。この仕組みにより、対処し忘れているエラーがないかをコンパイルの段階で確認できます。

void readFile() throws IOException {
    // IOExceptionを投げる可能性がある処理
}

独自の例外を作る

Exceptionを継承することで、独自の例外クラスを定義できます。

class InvalidAgeException extends Exception {
    InvalidAgeException(String message) {
        super(message);
    }
}

void setAge(int age) throws InvalidAgeException {
    if (age < 0) {
        throw new InvalidAgeException("年齢は0以上である必要があります");
    }
}

Javaならではの注意点

チェック例外の存在は、Java初心者が最初に戸惑うポイントです。「対処していない例外があります」というエラーが出たら、throwsという宣言を追加するか、try・catchでその場に対処する必要があります。

try-with-resourcesで後片付けを自動化する

ファイルなど、使い終わったら必ず閉じる必要があるリソースには、try-with-resourcesという書き方を使うと、finallyを自分で書かなくても自動的に閉じてくれます。

try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
    String line = reader.readLine();
} catch (IOException e) {
    System.out.println("読み込みに失敗しました");
}

まとめ

Javaのエラーハンドリングはtry・catch・finallyが基本で、チェック例外という独自の仕組みがあります。独自の例外クラスやtry-with-resourcesも活用しつつ、エラーの種類ごとに丁寧に対処していきましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本