Javaを学び始めると、try-catch や throws、そして エラー(Error) という言葉が登場します。
どれも「問題が起きたとき」に関係する仕組みですが、初心者にとっては違いが分かりにくいポイントです。
この記事では、IT初心者の方でもイメージしやすいように、具体例を交えながら解説します。
1. そもそも「例外」とは?
例外(Exception)とは
プログラムの実行中に発生する“想定外の出来事” です。
ただし重要なのは、
例外は「想定できるトラブル」
だという点です。
例外の身近な例
- ファイルを読み込もうとしたら、ファイルが存在しなかった
- ユーザーが数字を入力するはずなのに、文字を入力した
- 0で割り算をしてしまった
これらは、
- 起こる可能性がある
- 事前に対処方法を考えられる
という特徴があります。
2. try-catchとは何か?
try-catchの役割
「例外が起きるかもしれない処理」を監視し、起きたらどうするかを決める仕組みです。
例:0で割った場合
public class Sample {
public static void main(String[] args) {
try {
int result = 10 / 0;
System.out.println(result);
} catch (ArithmeticException e) {
System.out.println("0で割ることはできません");
}
}
}
処理の流れ
-
tryの中を実行する - 途中で例外が発生する
- 対応する
catchに処理が移る - プログラムは異常終了せずに続行できる
try-catchを使う理由
- プログラムが突然止まるのを防ぐ
- ユーザーに分かりやすいメッセージを表示できる
- 安定したアプリケーションを作れる
3. throwsとは何か?
throwsの役割
システムに 「このメソッドでは例外を処理しません。呼び出し元に任せます」
と宣言する仕組みです。
例:ファイルを読み込む処理
import java.io.*;
public class Sample {
public static void readFile() throws IOException {
FileReader fr = new FileReader("test.txt");
}
}
このコードの意味
-
readFileメソッド内でIOExceptionが起きる可能性がある - ただし、このメソッド内では対処しない
- 呼び出した側が try-catch で処理する必要がある
呼び出し側の例
public class Main {
public static void main(String[] args) {
try {
Sample.readFile();
} catch (IOException e) {
System.out.println("ファイルが見つかりません");
}
}
}
4. try-catch と throws の使い分け
| 項目 | try-catch | throws |
|---|---|---|
| 例外の処理 | その場で行う | 呼び出し元に任せる |
| 主な用途 | ユーザー向け処理 | 共通部品・ライブラリ |
| 初心者向け | 理解しやすい | 最初は少し難しい |
実務的な考え方
- 画面やユーザー操作に近い処理 → try-catch
- 共通ロジック・下位レイヤー → throws
5. エラー(Error)とは何か?
エラーの特徴
プログラムでは基本的に対処できない深刻な問題です。
代表例:
-
OutOfMemoryError(メモリ不足) -
StackOverflowError(無限再帰など)
エラーの考え方
エラーは「アプリケーションの限界を超えた状態」
そのため、
- try-catchで捕まえることはできる
- しかし、捕まえても回復できないことが多い
6. 例外とエラーの違いまとめ
| 項目 | 例外(Exception) | エラー(Error) |
|---|---|---|
| 想定可能か | 可能 | ほぼ不可能 |
| 対処 | プログラムで対応する | 原則対応しない |
| 主な原因 | 入力ミス・環境依存 | JVMやシステムの問題 |
| 初心者の意識 | 積極的に学ぶ | 深追いしなくてよい |
7. 初心者向けの覚え方
-
例外
→ 「起こりうるトラブル。保険(try-catch)をかける」 -
throws
→ 「この問題、上司(呼び出し元のクラス)に判断を任せる」 -
エラー
→ 「システムが壊れかけている状態」
8. まとめ
- try-catch は 例外をその場で処理する
- throws は 例外処理を他人に任せる
- エラーは 基本的にアプリではどうしようもない
Javaの例外処理は、安全で止まらないプログラムを書くための重要な仕組みです。
最初は try-catch をしっかり理解することから始めるとよいでしょう。