WebSphere Message Service Clients for C/C++ and .NET, Version 1.2 作業系統: Linux, Windows

處理 C++ 中的錯誤

如果 XMS 在處理方法的呼叫時偵測到錯誤,XMS 會擲出異常狀況。

XMS 異常狀況為下列其中一種類型的物件:

Exception 類別為這個清單中之其餘每一種類別的超類別。因此, 應用程式可在 try 區塊中包含XMS 方法的呼叫, 若要捕捉所有類型的 XMS 異常狀況,應用程式只需在 catch 建構的異常狀況宣告中, 指定 Exception 類別。以下的程式碼片段說明這項技術:

#include <xms.hpp>

using namespace std;

int main(int argc, char *argv[])
{
  int nRC = 0;

  try
  {
    xms::ConnectionFactory connFact;
    xms::Connection        conn;

    connFact.setIntProperty(XMSC_CONNECTION_TYPE, XMSC_CT_RTT);
    connFact.setIntProperty(XMSC_RTT_CONNECTION_PROTOCOL, XMSC_RTT_CP_TCP);
    connFact.setStringProperty(XMSC_RTT_HOST_NAME, "localhost");
    connFact.setIntProperty(XMSC_RTT_PORT, 1506);

    conn = connFact.createConnection();

    // 此處為其他程式碼
  }
  catch(xms::Exception & ex)
  {
    // 此處為錯誤處理碼

    nRC = -1;
  }

  return(nRC);
}

請注意,如果應用程式使用這項技術來捕捉 XMS 異常狀況, 應用程式必須以參照(而非以值)形式來捕捉異常狀況。這可確保異常狀況不會被截斷, 且重要的錯誤資料不會遺失。

Exception 類別本身是 std::exception 類別的子類別。因此, 若要捕捉所有異常狀況(包括 C++ 執行時期環境所擲出的), 應用程式只需在 catch 建構的異常狀況宣告中, 指定 std::exception 類別。以下的程式碼片段說明此點:

#include <xms.hpp>

using namespace std;

int main(int argc, char *argv[])
{
  int nRC = 0;

  try
  {
    xms::ConnectionFactory connFact;

    connFact.setIntProperty(XMSC_CONNECTION_TYPE, XMSC_CT_RTT);
    connFact.setIntProperty(XMSC_RTT_CONNECTION_PROTOCOL, XMSC_RTT_CP_TCP);
    connFact.setStringProperty(XMSC_RTT_HOST_NAME, "localhost");
    connFact.setIntProperty(XMSC_RTT_PORT, 1506);

    // 此處為其他程式碼
  }
  catch(exception & ex)
  {
    // 此處為錯誤處理碼

    nRC = -1;
  }

  return(nRC);
}

在應用程式捕捉 XMS 異常狀況後, 應用程式可使用 Exception 類別的方法來找出錯誤的相關資訊。如需這些方法的定義,請參閱ExceptionXMS 異常狀況所封裝的資訊, 本質上和在錯誤區塊中提供給 C 應用程式的相同。如需詳細資訊請參閱錯誤區塊

如果 XMS 在呼叫期間偵測到多個錯誤, XMS 可針對每一個錯誤各建立一個異常狀況, 並鏈結這些異常狀況,以形成一鏈。在應用程式捕捉到第一個異常狀況後, 應用程式可呼叫 getLinkedException() 方法以取得鏈中之下一個異常狀況的指標。應用程式可繼續對鏈中的每一個異常狀況呼叫 getLinkedException() 方法, 直到傳回空值指標(表示鏈中已無其他異常狀況)為止。

請注意,由於 getLinkedException() 方法會傳回所鏈結之異常狀況的指標, 因此應用程式有責使用 C++ delete 運算子來釋放該物件。

Exception 類別提供的 dump() 方法可讓應用程式以格式化文字形式,將異常狀況傾出至指定的 C++ 輸出串流中。運算子 << 會在 Exception 類別上超載, 且可用在相同用途上。

相關概念
可在執行時期處理的錯誤狀況

Concept topic

使用條款 | 評比此網頁

時間戳記前次更新: 25 Apr 2006
(C) Copyright IBM Corporation 2005. All Rights Reserved.
本資訊中心採用 Eclipse 技術。(http://www.eclipse.org)