3.7.2.4.7 例外

クライアントによって呼び出されるCORBAオブジェクト・メソッドで例外が発生した場合、TPフレームワークが例外を捕捉して、最終的にクライアントに返します。これは、deactivate_object()を呼び出して例外が発生した場合にもあてはまります。

クライアントには、deactivate_object()で発生した例外について通知されません。アプリケーション・コードでは、格納されているCORBAオブジェクトの状態が一貫性があるかどうかをチェックする必要があります。たとえば、アプリケーション・コードで、deactivate_object()がオブジェクトの状態を正しく保存したかどうかを示す永続性フラグを保存すると便利です。このフラグをactivate_object()でチェックします。

deactivate_object()の実行中にエラーが発生した場合、アプリケーション・コードはCORBA標準例外またはDeactivateObjectFailed例外のいずれかを発生させます。deactivate_object()がTPフレームワークによって呼び出されると、TPフレームワークは例外を捕獲して、次のイベントが発生します:

  • オブジェクトが非アクティブ化されます。
  • クライアントがトランザクションを開始した場合、トランザクションはロールバックされません。
  • クライアントには、deactivate_object()で発生した例外は通知されません。
  • 発生した例外に基づいて、次のように、メッセージがユーザー・ログ(ULOG)ファイルに書き込まれます:
    TobjS::DeactivateObjectFailed
    "TPFW_CAT:27: ERROR: De-activating object - application raised 
    TobjS::DeactivateObjectFailed. Reason = reason  . Interface =  
    interfaceName  , OID =  oid  " 
    reasonはユーザー指定の理由を示し、interfaceNameoidはそれぞれ呼び出されたCORBAオブジェクトのインタフェースIDとオブジェクトIDを示します。
    CORBA::Exception
    "TPFW_CAT:28: ERROR: De-activating object - CORBA Exception not 
    handled by application. Exception ID = exceptionID. Interface =
     interfaceName, OID = oid"
    exceptionID は例外のインタフェースID、interfaceNameoid はそれぞれ呼び出されたCORBAオブジェクトのインタフェースIDとオブジェクトIDを示します。
    Other exception
    "TPFW_CAT:29: ERROR: De-activating object - Unknown Exception not 
    handled by application. Exception ID = exceptionID. Interface = 
    interfaceName, OID = oid"
    exceptionID は例外のインタフェースID、interfaceNameoid はそれぞれ呼び出されたCORBAオブジェクトのインタフェースIDとオブジェクトIDを示します。