例外
例外(「exceptional event」の略)とは、プログラムの実行中に発生するエラーや予期しないイベントのことです。例外が発生すると、プログラムの処理の流れが中断されます。プログラムが例外を処理できれば、実行を続けられる場合があります。例外が処理されないと、プログラムは強制的に終了することがあります。
複数のプログラミング言語が例外をサポートしていますが、その使い方は言語によって異なります。たとえば、例外はJava言語の重要な要素であり、プログラムの処理の流れを制御するためによく使われます。JavaにはException クラスがあり、TimeoutException、UserException、IOExceptionなど、数十のサブクラスがあります。IOExceptionのようなサブクラスには、FileNotFoundExceptionやCharacterCodingExceptionのような、さらに具体的な例外が含まれています。これらは、ファイルが見つからない場合や、文字列の文字エンコーディングが認識されない場合に「スロー」されます。
ほかの言語では、メモリの割り当てに失敗した場合やシステムレベルのエラーなど、基本的な実行時エラーを捕捉するためだけに例外を使います。たとえば、C++プログラムでは、メモリを割り当てられないときにbad_alloc例外を、オペレーティングシステムでエラーが発生したときにsystem_error例外をスローすることがあります。
例外処理
適切に作られたコンピュータープログラムは、例外を確認し、適切に処理します。これは、開発者が発生する可能性のある例外を確認し、それらを処理するためのコードを書く必要があるということです。プログラムが例外を適切に処理すれば、予期しないエラーを検出して管理し、プログラムがクラッシュするのを防げます。
例外は発生したときに「スロー」され、プログラム内の別のコードによって「捕捉」されます。例外はthrow文を使って明示的にスローすることも、try節の中で暗黙的にスローすることもできます。以下は、Javaにおける「try / catch」構文の例です。次のコードは0による割り算を試みますが、ArithmeticException例外をスローし、結果として0を返します。
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
5行目(11を0で割ったとき)で例外がスローされるため、try文の残りの部分(6行目)は実行されません。代わりに、7行目で例外が捕捉され、結果として0が返されます。
知識をテストする