Javaで「if文だけじゃダメなの?」──なぜ例外処理がわざわざあるのかを徹底解説!

こんにちは。ゆうせいです。

if文でエラーをチェックできるなら、例外処理って必要?

これはとてもいい疑問です!実際にプログラミングを学び始めた人が必ず通る道でもあります。

今回は、Javaにおける「if文によるエラーチェック」と「例外処理(try-catch)」の違いを、たくさんの例や図を交えながら、なぜ例外処理が言語仕様として用意されているのかを深掘りしていきます!


結論:if文と例外処理は役割が違う!

まずはポイントだけ先に押さえましょう。

方法主な目的想定する事態
if予測できる状態の分岐やチェック条件によって処理を分けたい、値を検証したい場合
例外処理予測できないエラーの処理ファイルが存在しない、ネットワーク断線など

つまり、if文は「正常系の判断」例外処理は「異常系の対応」のために存在しています。


if文で処理する場合の限界とは?

例1:ゼロ除算のチェック

int denominator = 0;
if (denominator != 0) {
    int result = 10 / denominator;
} else {
    System.out.println("0では割れません!");
}

このように、事前に条件を知っていて、それをコードで書ける場合は、if文で問題ありません。

しかし…


予測できないエラーには対応できない!

以下のようなケースを考えてみましょう。

例2:ファイル読み込み

BufferedReader br = new BufferedReader(new FileReader("data.txt"));
String line = br.readLine();

このとき、「ファイルが存在しない」「アクセス権がない」など、実行時にしか分からないトラブルが発生する可能性があります。

これをif文で書こうとすると:

// ファイルがあるかどうか事前に知る方法はない(完全には)

完全にはチェックできないんです。

だからこそ:

try {
    BufferedReader br = new BufferedReader(new FileReader("data.txt"));
} catch (FileNotFoundException e) {
    System.out.println("ファイルが見つかりません!");
}

という風に、「何が起こるか分からないから、エラーが起きたらこう対処してね」という仕組みを、例外処理で記述するわけです。


例外処理が必要な理由をたとえ話で!

たとえ:料理をするときの「アクシデント対応」

  • if文:冷蔵庫を開けて、「牛乳があるならシチュー、なければカレー」と前もって選ぶ
  • 例外処理:料理中に包丁が折れた!コンロが壊れた!など、予期せぬ問題に即対応する。

アクシデントは事前にifで分岐できません。だから「何かあったときの対応策」が必要なのです。


Javaが例外処理を言語仕様にしている理由

1. コードの見通しが良くなる

すべてをifで分岐していたら、処理の本筋が埋もれてしまいます。

例外処理を使えば、「正常な流れ」と「異常時の対応」を分離できます。

2. 呼び出し元にエラーを伝えられる

例外処理を使えば、メソッドの呼び出し元に「トラブルがあったこと」を伝えることができます。

public void loadFile() throws IOException {
    // 呼び出し元に投げる
}

3. 言語による強制がある

Javaはチェック例外(checked exception)をサポートしており、IOExceptionなど一部の例外はcatchするか、throwsで宣言しなければならないというルールがあります。

これは、安全なコードを書くための保険です。


まとめ:if文と例外は補完し合う存在!

項目if文例外処理
想定レベル予測できる状態実行時の想定外のトラブル
コードの役割通常処理の制御異常時の復旧や通知
責任の所在その場で判断呼び出し元に任せることもできる

今後の学習の指針

以下の視点を持って学習を進めましょう!

  • どのエラーがifで処理でき、どれが例外なのか?を見分ける訓練
  • チェック例外と非チェック例外(RuntimeExceptionなど)の違いを理解する
  • 実際に自分で例外を作って、throwとthrowsの挙動を体験してみる

そして何より、「問題が起きたとき、誰が、いつ、どこで処理するべきか?」という設計視点を身につけることが、新人エンジニアの皆さんが実務についたときに非常に役立ちます

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。