例外とは何か

プログラムの実行は失敗する(エラーが発生する)ことがあります。たとえば開こうとしたファイルがない場合、メソッドに渡す引数の数が違った場合、数値を0で割ろうとした場合... などなど、そのレイヤーは様々です。

プログラムがエラーを発生させた時、何も対策をしないとその時点でプログラムはクラッシュし、実行は終了してしまいます。しかしあらかじめプログラマが「助け舟」を出しておくことで、プログラムの続行を可能にするのが「例外処理」です。

例外処理ではある程度「失敗」をパターン分けして「このパターンの失敗が起こったらこう対応する」と決めておくことで、異常が発生してもプログラムの実行を止めずに続行させることができます。

例外のクラス構造

オブジェクト指向言語たるRubyでは、例外もクラスシステムに組み込まれています。まずすべての例外の親となるのは Exceptionクラス で、そこから派生した例外クラスがいろいろと定義されています。『パーフェクトRuby』p.84から引用した以下の図を参考にしてください。

classes

とりわけ大きなサブグループのStandardErrorが見つかると思います。アプリケーションを記述する際、独自の例外を定義する場合はこのStandardErrorを継承するのが基本です。

次のページでは、例外を捕捉する方法と、例外を意図的に発生させる方法を説明します。