| 標準/拡張機能 | C/C++ | 依存項目 |
|---|---|---|
ANSI/ISO |
C++ のみ |
#include <exception>
terminate_handler set_terminate(terminate_handler ph) throw();
set_terminate() 関数は、z/OS® XL C++ エラー処理メカニズムの一部です。set_terminate() に提供される引数は、ヘッダー <exception> に定義される terminate_handler 型 (すなわち、void 戻り型の関数、および引数なしの関数へのポインター) です。指定された関数は、terminate() 関数によって呼び出されます。
terminate() に登録されている関数は、caller() に戻ることなく、プログラムの実行を終了しなければなりません。set_terminate() がまだ呼び出されていない場合、terminate() は、システム定義のデフォルト終了ハンドラーを呼び出し、その終了ハンドラーが abort() を呼び出します。
マルチスレッド環境では、set_terminate() 呼び出しの発行によって作成された終了関数が、(POSIX) プロセスのすべてのスレッドに適用されます。スレッドが、その実行スレッドが取得できない例外を投入した場合は、terminate() が呼び出されます。デフォルトの terminate() アクションは、デフォルト時に SIGABRT シグナルを発生させる abort() を呼び出します。シグナル・ハンドラーがない場合には、SIGABRT によりプロセスが 終了されます。終了関数として pthread_exit() を呼び出す関数を提供することによって、これをスレッド・レベル終了で上書きできます。これでスレッドは終了しますが、プロセスは終了しません。
set_terminate() は、直前の terminate_handler のアドレスを戻します。
set_terminate() 関数を含む、z/OS XL C++ 例外処理の詳細については、「z/OS XL C/C++ ランゲージ・リファレンス」を参照してください。