【初心者向けに簡単解説】例外処理とは?

例外処理とは?
  • このエントリーをはてなブックマークに追加
  • Pocket

例外処理とはプログラムがなんらかのエラーを出したときに、処理を中断して別の処理を行うことだ。

予想外のエラーが出ないプログラムなんてほぼない。プログラミングをする上で、なくてはならないものになっている。

このページでは例外処理について初心者向けにご紹介しよう。

例外処理とは?

コンパイルを行っているのにエラーが起きる?

多くのプログラミング言語には例外処理という機能がある。例外処理とはその名の通り、通常でないことが起きた場合に行う処理のことだ。

Javaなどのコンパイル言語ではプログラミングしたソースコードを実行させる前にコンパイルを行い、コンピュータが理解できる形式に変換する。

ソースコードに文法の間違いなどがある場合はコンパイルの時点でエラーが出力され、実行できないため、基本的なミスや間違いはJavaを実行する前に大体は消すことができる。

しかし、プログラムの中には、コンパイル時にはエラーがなく実行できるが、実行している途中に起きるエラーというものがある。

例えば、あるファイルを開こうとしたが、そのファイルが存在しなかったなどの場合だ。コンパイル時点ではファイルがあるかどうかはチェックされないが、実際にプログラムを実行してみたらあるはずのファイルが無かったというようなことはある。

javaの例外処理

コンパイルの時点ではわからなかったが、実行してみて気づくエラーだ。

プログラムはそのファイルを開こうとしたが無かったため処理が止まってしまう。

しかし、このJavaコードに「例外処理」を記述しておけば、処理を止めることプログラムをそのまま動かすこともできる。また、例えばファイルがないというメッセージを表示することも可能だ。

一般的なプログラムでの例外の対処方法

処理としては次のような形だ。

例外処理

例外処理を行うためには、まず起きた例外を検知する必要がある。

例外処理がサポートされているプログラミング言語では、自動で起きた例外を検知して、その例外を処理できる箇所に投げる。

投げられた例外を捉えることをcatchするといい、catchした例外に対して、プログラマが処理を記述することができる。

多くのプログラミング言語では、tryというブロックに処理を記述し、その中で起きた処理についてcatchブロックを作成し、投げられた例外について処理を記述する。

Javaの例外処理の特徴

多くのプログラミング言語に備えられている例外処理の機能であるが、Javaならではの特徴ももちろんある。

Javaの例外処理の特徴を理解することも重要だ。

先にtry-catchの基本を理解したければ下の記事を先に読んでもらったほうがいい。

ここでは、さらっと読んでおいていただき、知っておくくらいで十分だ。

例外もオブジェクト

Javaはオブジェクト指向言語だ。オブジェクト指向はすべてをモノとして扱うので、例外もオブジェクトとして扱う。

Javaの例外処理には「Throwable」というクラスのサブクラスである「Exception」クラスがあり、そこからさらに派生した「RuntimeException」クラスがある。

例えばファイルが存在しない場合の例外処理である「FileNotFoundException」クラスは「Exception」クラスのサブクラスであるように、Javaで使用する例外処理のクラスはすべて「Exception」クラスか「RuntimeException」クラスを継承したサブクラスだ。そのため、「Exception」クラスか「RuntimeException」クラスを継承したサブクラスを作ることで独自の例外処理クラスを作成することができる。

例外クラス

検査例外

「Exception」クラスと「RuntimeException」クラスには大きな違いがある。

「Exception」クラスが使用される可能性がある場合は、プログラムの中で例外処理を書かなくてはならない。

ファイルを読み込む処理をプログラムで書く場合、「Exception」クラスのサブクラスである「FileNotFoundException」クラスが呼ばれる可能性があるため、例外処理を記述しないソースコードはコンパイルエラーになり、実行することができない。

ソースコード内の例外処理の記述漏れをコンパイル時点でエラーにすることを「検査例外」といい、Javaの例外処理の大きな特徴である。

「RuntimeException」クラスのサブクラスには、nullの値のオブジェクトを参照した場合の例外処理である「NullPointerException」クラスや、配列の範囲外を指定した場合の例外処理である「ArrayIndexOutObBoundsException」クラスなどがあり、これらの例外処理は起こる可能性があったとしても、コンパイルエラーになることはない。これを「非検査例外」という。

「検査例外」はあるはずのファイルが存在しない場合など、プログラマにとっては防ぎようがないエラーを想定している。

一方で「非検査例外」はプログラマの人為的なミスで起こり得るエラーを想定している。

Javaの検査例外という機能は例外処理の記述を強制されるため、記述するソースコードが多くなり見やすさが損なわれたり等々デメリットもある。

ただ、コンパイル時点で起こり得るエラーを把握できるため、堅牢なシステムを構築するためは便利だ。

まとめ

このページでは例外処理とは?についてまとめてきた。

実際のコーディングについては、次のページを参考にしてほしい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する