C++ ライブラリ・リファレンス

エラー処理


extern int errno; 
class c_exception { ... };
int complex_error(c_exception&);

複素数ライブラリでは、エラー処理が上のように定義されています。

外部変数 errno は C ライブラリの大域的なエラー状態です。errno は、標準ヘッダー errno.h (perror(3) のマニュアルページを参照) にリストされている値を持ちます。 errno には、多くの関数でゼロ以外の値が設定されます。ある特定の演算でエラーが起こったかどうか調べるには、次のようにしてください。

  1. errno をゼロに設定する。

  2. 演算終了後に値を調べる。

関数 complex_error c_exception 型の参照引数を持ち、次に示す複素数ライブラリ関数に呼び出されます。

デフォルトの complex_error はゼロを返します。ゼロが返されたということは、デフォルトのエラー処理が実行されたということです。ユーザーは独自の complex_error 関数を作成して、別のエラー処理を行うことができます。エラー処理については、cplexrr(3C++) のマニュアルページで説明しています。

デフォルトのエラー処理については、cplxtrig(3C++) cplxexp(3C++) のマニュアルページで説明しています。次に概要を示します。

表 2-3 複素数ライブラリ関数

複素数ライブラリ関数 

デフォルトエラー処理 

exp

オーバーフローが起こった場合は errno ERANGE に設定し、最大複素数を返します。

log、log10

引数がゼロの場合は errno EDOM に設定し、最大複素数を返します。

sinh、cosh

引数の虚部によりオーバーフローが起こる場合は複素数ゼロを返します。引数の実部によりオーバーフローが起こる場合は最大複素数を返します。どちらの場合も errno ERANGE に設定されます。