IBM Content Manager, バージョン 8.5      サポート:  Oracle, DB2, C++, Java

例外の処理

API アプリケーションで生じる問題を処理するには、 例外処理を使用します。

API は問題を検出すると、例外をスロー (throw) します。例外がスローされると、 DKException クラスまたはそのサブクラスの例外オブジェクトが 1 つ作成されます。

DKException が作成されると、コネクター層は、デフォルトのロギング構成が使用されていると想定し、診断情報をログ・ファイルに記録します。

DKException をキャッチ (catch) すると、エラー・メッセージ、エラー・コード、 および実行中に発生したエラー状態を表示することができます。 エラーが見つかると、 エラー・メッセージが例外がスローされたロケーションについての情報と共に発行されます。 エラー ID などの追加情報も示されます。

以下のコード例は、IBM® Content Manager のスローとキャッチのプロセスを示しています。

例: Java

try{
    ... EIP API Operations ...
}
catch (DKException exc){
    // NOTE: Print Function Provided in SConnectDisconnectICM API Sample.
    System.out.println("");
    System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    System.out.println("X     !!! Exception !!!    X");
    System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    System.out.println("       Name: " + exc.name());
    System.out.println("    Message: " + exc.getMessage());
    System.out.println(" Message ID: " + exc.getErrorId());
    System.out.println("Error State: " + exc.errorState());
    System.out.println(" Error Code: " + exc.errorCode());
    exc.printStackTrace();
    System.out.println("----------------------------------");
} catch (Exception exc) {
    // NOTE: Print Function Provided in SConnectDisconnectICM API Sample.
    System.out.println("");
    System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    System.out.println("X     !!! Exception !!!    X");
    System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    System.out.println("    Name: " + exc.getClass().getName());
    System.out.println(" Message: " + exc.getMessage());
    exc.printStackTrace();
    System.out.println("----------------------------------");
}

例: C++

try{
    ... EIP API Operations ...
}
catch (DKException &exc){
    // NOTE: Print Function Provided in SConnectDisconnectICM API Sample.
    cout << endl;
    cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"               << endl;
    cout << "X     !!! Exception !!!    X"               << endl;
    cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"               << endl;
    cout << "       Name: " << exc.name()                << endl;
    cout << " Message ID: " << exc.errorId()             << endl;
    cout << "Error State: " << exc.errorState()          << endl;
    cout << " Error Code: " << exc.errorCode()           << endl;
    // Print API Location(s) Detecting Error
for(unsigned int j=0; j < exc.locationCount(); j++){ //Print all locations
        const DKExceptionLocation* p = exc.locationAtIndex(j);
        cout << " Location " << j << ": " << p->fileName()   << "::"
             << p->functionName() << '['  << p->lineNumber() << ']' << endl;
    }
    if(exc.textCount()<=0) // Write statement if no locations.
        cout << "  Locations: <none> "                   << endl;
    // Error Message(s)
    for(unsigned int i=0; i < exc.textCount(); i++) // Print All Messages
        cout << "  Message " << i << ": " << exc.text(i) << endl;
    if(exc.textCount()<=0) // Notify user if no messages.
        cout << "   Messages: <none> "                   << endl;
    cout << "----------------------------------------"   << endl;       
} 

エラーの検出および処理について詳しくは、SConnectDisconnectICM API 実習サンプルを参照してください。



フィードバック

最終更新: 2013 年 12 月
dcmap078.htm

© Copyright IBM Corp. 2013.