Sun Studio 12 Update 1: C++ ユーザーズガイド

15.4 エラー処理

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


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

外部変数 errno は C ライブラリの大域的なエラー状態です。errno は、標準ヘッダー errno.h (perror(3) のマニュアルページを参照) にリストされている値を持ちます。errno には、多くの関数でゼロ以外の値が設定されます。

ある特定の演算でエラーが起こったかどうか調べるには、次のようにしてください。

  1. 演算実行前に errno をゼロに設定する。

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

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

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

デフォルトのエラー処理については、cplxtrig(3CC4) と cplxexp(3CC4) のマニュアルページを参照してください。次の表にも、その概要を掲載しています。

複素数ライブラリ関数  

デフォルトエラー処理  

exp

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

log、log10

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

sinh、cosh

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