Java例外:種類、階層、ハンドリング
Java例外
Java例外を探求——エラー、例外タイプ、堅牢なエラーハンドリングを形作る階層を理解します。
例外はプログラムの正常な流れを中断する予期せぬイベントで、しばしば異常終了を招きます。
例外は以下を含む多様な原因から生じます:
- 不正なユーザー入力
- デバイス障害
- ネットワーク中断
- 物理的制限(ディスク容量不足など)
- コード欠陥
- 存在しないファイルのオープン試行
Java例外階層
以下はJavaの例外階層の簡略図です。

この階層のルートはThrowableクラスです。2つの主要ブランチに分岐:ErrorとException。
エラー
エラーは、JVM OutOfMemory、スタックオーバーフロー、ライブラリ互換性問題、無限再帰など、回復不能な状態を表します。通常プログラマの制御外であり、ハンドリングは推奨されません。
例外
例外は、プログラムが捕捉・回復可能な状態です。例外発生時、JVMは例外オブジェクトを作成し、イベント発生時の名前、説明、プログラム状態をカプセル化します。
次のチュートリアルでこれらの例外ハンドリングを扱います。ここではExceptionブランチ内の2つの主要カテゴリを検討します。
Java例外タイプ
ExceptionブランチはRuntimeException(非検査)とIOException(検査)に分かれます。違いを理解することが効果的なエラーハンドリングの鍵です。
1. RuntimeException
RuntimeExceptionインスタンスはプログラミングミスから生じ、コンパイル時にチェックされません。一般例:
- 不適切なAPI使用 ——
IllegalArgumentException - Nullポインタ参照 ——
NullPointerException - 配列インデックス範囲外 ——
ArrayIndexOutOfBoundsException - ゼロ除算 ——
ArithmeticException
要するに、実行時例外なら多くの場合コーディングエラーであり、捕捉ではなく修正すべきです。
2. IOException
IOExceptionは、コンパイラが開発者にハンドリングを強制する検査例外を表します。典型的シナリオ:
- 存在しないファイルのオープン試行 ——
FileNotFoundException - ファイル終端を超えた読み取り
これらの検査例外の適切なハンドリングは、レジリエントなアプリケーション構築に不可欠です。
例外ハンドリング技法は次のチュートリアルで深掘りします。
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java例外ハンドリング完全攻略:try-catch、finally、throw、throws
- Java throw vs throws:実践例でマスターする例外ハンドリング
- Java複数例外処理のマスター:単一catchブロックで複数例外を捕捉
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上