Javaのエラー対処法まとめ:例外処理(try・catch・finally・throws)をやさしく解説!

Java

はじめに

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. よくある例外と対処法

例外名原因対処法
NullPointerExceptionnullにアクセスnullチェックする
ArrayIndexOutOfBoundsException配列の外にアクセス配列の長さをチェック
NumberFormatException文字列→数値変換失敗入力値をチェック
IOExceptionファイル読み込み失敗ファイル存在確認+try-catch
InputMismatchExceptionScannerで型が違う入力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チェック&ログ出力を

コメント

タイトルとURLをコピーしました