Developer

【はじめてのJava】例外処理【例外処理編】
2021.08.31
Lv1

【はじめてのJava】例外処理【例外処理編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


例外処理

プログラムを作成、実行しているときには、様々な「予期していなかった状況や状態」が起こることがあります。
それらは大きく「コンパイルエラー」と「実行時エラー」に分けられています。
今回の記事ではその中の「実行時エラー」について解説していきます。

目次


例外処理とは

プログラムの中で発生する「エラー」は、大きく「コンパイルエラー」と「実行時エラー」の2つに分けられます。
「コンパイルエラー」は、プログラム上の記述ミス等で起こるエラーで、ソースコードのコンパイルに失敗します。
コンパイルエラーが起こった場合には、該当のソースコードを修正して再度コンパイルを行います。
「実行時エラー」は、コンパイルしたプログラムを実行してみたときに、何らかの原因でプログラムの実行が止まってしまうようなエラーです。
実行時エラーはまとめて「例外」と呼ばれ、例外が発生した原因などによってさらに細かく分類されています。
基本的な例外への対処方法としては、プログラムの中に「例外処理」という「例外が発生した時にどのような処理をするのか」ということをあらかじめ記述しておくことで対処します。
この「例外処理」の処理は、必ず記述しなければいけない場合とそうでない場合の2つのパターンが存在し、どちらのパターンになるかは例外の種類によって決められています。


例外の種類

例外の種類は大きく分けると以下の2つに分類されます。
非検査例外(非チェック例外)
検査例外(チェック例外)
非検査例外の中には「エラー」と「RuntimeException」の2つ、検査例外の中には「Exception」という例外が属します。

Javaでは、例外は種類ごとにクラスとして定義されています。
Throwable」クラスというクラスをスーパークラスとして、様々な例外クラスがThrowableクラスを継承して作成されています。


非検査例外

非検査例外(非チェック例外)の中には、「エラー(Error)」と「RuntimeException」の2種類が属します。
これらの例外は、例外処理のコードは任意となっています。


エラー(Error)

エラー(Error)クラスは「Throwable」クラスから継承されたクラスです。
エラークラスから継承して作られた例外クラスも同じように例外処理は任意となっています。
エラークラスに属するものは、ハードウェアの故障や、メモリ不足などのアプリケーション側で処理できないエラーになります。


RuntimeException

RuntimeExceptionクラスは「Exception」クラスから継承されたクラスです。
Exceptionクラスは、後ほど解説しますが例外処理が必須となっています。
ですが、その中の「RuntimeException」とそれを継承した例外クラスは例外処理が任意となっています。
RuntimeExceptionクラスに属するものは、プログラムの不具合などが原因で実行時に起こる例外が主なものです。
間違ったコードの結果で発生するものですので、正しいコードを作成して回避することが先決になります。


検査例外

検査例外(チェック例外)はThrowableクラスから直接継承する「Exception」クラスとそのサブクラスに属する例外クラスです。
これらの例外クラスは例外処理が必須になっているため、プログラム内でこれらの例外が発生する可能性がある場合、必ずその例外を処理するコードを書く必要があります。


Exception

Exceptionクラスは、Throwableクラスから直接継承されたクラスです。
外部のリソースと接続する際のネットワークのトラブルや、ファイルが指定のディレクトリに配置されていなかった場合などはこの例外が発生します。


例外処理編・次回の内容

今回は例外処理の概要と種類を紹介しました。
次回は、具体的に例外処理を行う方法を解説していきます。


初めてのJavaシリーズの目次はこちら
例外処理編の記事一覧はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら