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関数だけで発生します。次の項では、一部のエラーの種類について詳しく説明します。
親トピック: エラーの管理