はじめに
Javaを勉強していると、必ず出てくるのが「エラー」や「例外」。プログラムが途中で止まってしまったり、意味不明なメッセージが出たりして、困ったことはありませんか?
でも大丈夫!Javaには**エラーに強いプログラムを書くための「例外処理」**が用意されています。この記事では、エラーの仕組みと対処法(try-catch-finally・throws)を初心者向けにやさしく解説します。
1. エラー(例外)とは何か?
エラーと例外の違い
- エラー(Error) → JVMの内部的な問題。基本的に開発者は対処しない(例:OutOfMemoryError)
- 例外(Exception) → プログラムで起きた予期しない出来事(例:0で割る、nullにアクセス)
Exceptionの2種類
| 種類 | 説明 | 例 |
|---|---|---|
| Checked Exception | 必ずtry-catchまたはthrowsが必要 | IOException, SQLExceptionなど |
| Unchecked Exception | 書かなくてもよいが注意必要 | NullPointerException, ArithmeticExceptionなど |
2. try-catch-finally構文
基本の形
try {
// エラーが起きそうな処理
} catch (Exception型 変数) {
// エラーが起きたときの処理
} finally {
// 最後に必ず行いたい処理(省略可)
}
実例:0で割ったとき
try {
int result = 10 / 0;
System.out.println("結果:" + result);
} catch (ArithmeticException e) {
System.out.println("0で割れません!");
} finally {
System.out.println("処理終了");
}
3. throwsキーワードの使い方
メソッド内でエラーが起きそうな処理があるとき、**そのエラーを「呼び出し元に投げる」**ことができます。
public void readFile(String path) throws IOException {
FileReader reader = new FileReader(path);
}
このように書いておくと、呼び出し元がtry-catchで受け取る責任を持ちます。
4. 複数catchとthrow
複数catch
try {
// 何かの処理
} catch (IOException e) {
System.out.println("ファイル関係のエラー");
} catch (NullPointerException e) {
System.out.println("nullを使ってしまった");
}
throw文:自分で例外を投げる
public void checkAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年齢は0以上にしてください");
}
}
5. finallyブロックの使いどころ
finally は、エラーが起きても・起きなくても 必ず実行されます。
よくある使い方:ファイルやDBの後始末
FileReader reader = null;
try {
reader = new FileReader("data.txt");
// 読み取り処理
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close(); // 忘れずにクローズ!
}
}
6. よくある例外と対処法
| 例外名 | 原因 | 対処法 |
|---|---|---|
| NullPointerException | nullにアクセス | nullチェックする |
| ArrayIndexOutOfBoundsException | 配列の外にアクセス | 配列の長さをチェック |
| NumberFormatException | 文字列→数値変換失敗 | 入力値をチェック |
| IOException | ファイル読み込み失敗 | ファイル存在確認+try-catch |
| InputMismatchException | Scannerで型が違う入力 | hasNextInt()などで事前確認 |
7. 実践コード例:ファイル読み込み
import java.io.*;
public class FileReaderExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("sample.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("ファイルが見つかりません");
} catch (IOException e) {
System.out.println("読み取りエラー");
}
}
}
8. 例外処理のベストプラクティス
- 例外を握りつぶさない(
catch(Exception e) {}は避ける) - エラーメッセージをログに残す
- 再スローや例外のラッピングも検討
9. 学習の進め方
エラー処理は地味ですが、「信頼できるプログラム」を作るための大切な技術です。
まずは、「絶対にJavaプログラマーになりたい人へ。」で例外処理の考え方を学びましょう。
そして、**実践的なコードのレビューやサポートを受けたい方は「サイゼントアカデミー」**を活用するのが近道です!
まとめ
- Javaの例外処理で安全なコードが書ける
- try-catch-finallyは基本中の基本
- throwsで呼び出し元に例外を投げる
- よくあるエラーには早めのnullチェック&ログ出力を


コメント