11.1 システム・エラー
Oracle Tuxedoシステムでは、関数が失敗すると、tperrno(5)
変数を使用してプロセスに情報が提供されます。すべてのATMI関数は、正常に処理が行われた場合、整数またはポインタを返します。エラーが発生した場合、-1
またはNULL
を返し、tperrno()
にエラーの原因を示す値を設定します。サービス・ルーチンを終了させるために使用するtpreturn()
やtpforward()
など、呼出し側に戻らない関数の場合、成功か失敗かを確認する唯一の方法はリクエスタのtperrno()
変数です。
tperrordetail(3c)
およびtpstrerrordetail(3c)
関数を使用すると、現在のスレッドへのOracle Tuxedoシステムの最新の呼出しで発生したエラーの詳細を取得できます。tperrordetail()
は、そのシンボリック名で表される整数値を返します。この整数値は、tpstrerrordetail()
の引数として使用され、エラー・メッセージを表す文字列を指すポインタを取得します。このポインタは、userlog(3c)
またはfprintf()
の引数として使用できます。返されるシンボリック名については、『Oracle Tuxedo ATMI C関数リファレンス』のtperrordetail(3c)
に関する項を参照してください。
tpurcode(5)
は、ユーザー定義の条件だけを通知します。tpurcode
の値は、tpreturn()
のrcode
引数の値に設定されます。tpreturn()
でエラーまたはトランザクション・タイムアウトが発生しないかぎり、tpreturn()
のrval
引数の値に関係なく、tpurcode
の値が設定されます。
tperrno(5)
に戻されるコードは、エラーの種類を表し、次の表は、そのエラーの種類を示しています。
表11-1 tperrnoエラーの種類
エラーの種類 | tperrnoの値 |
---|---|
中断 | TPEABORT2
|
Oracle Tuxedoシステム1 | TPESYSTEM
|
呼出し記述子 | TPELIMIT およびTPEBADDESC
|
会話 | TPEVENT
|
複製操作 | TPEMATCH
|
一般的な通信 | TPESVCFAIL、TPESVCERR、TPEBLOCK およびTPGOTSIG
|
ヒューリスティックな判断 | TPEHAZARD2 およびTPEHEURISTIC2
|
無効な引数1 | TPEINVAL
|
MIB | TPEMIB
|
エントリなし | TPENOENT
|
オペレーティング・システム1 | TPEOS
|
パーミッション | TPEPERM
|
プロトコル1 | TPEPROTO
|
キューイング | TPEDIAGNOSTIC
|
リリース間の互換性 | TPERELEASE
|
リソース・マネージャ | TPERMERR
|
タイムアウト | TPETIME
|
トランザクション | TPETRAN2
|
型付きバッファの不一致 | TPEITYPE およびTPEOTYPE
|
1. tperrno(5)で返される値によって失敗が通知されるすべてのATMI関数に適用されます。 | |
2. このエラーの詳細は、「致命的なトランザクション・エラー」を参照してください。 |
脚注1にあるように、tperrno(5)
によって通知される4種類のエラーは、すべてのATMI関数で発生するエラーです。それ以外のエラーの種類は、特定のATMI関数だけで発生します。次の項では、一部のエラーの種類について詳しく説明します。
親トピック: エラーの管理