XMS 메소드 호출을 처리하는 동안 오류를 발견하면 XMS 예외를 처리합니다.
예외 클래스는 이 목록에 있는 나머지 각 클래스의 수퍼클래스입니다. 그러므로 응용프로그램은 XMS 메소드 호출을 try 블록에 포함할 수 있으며 모든 유형의 XMS 예외를 발견하기 위해 발견 구성의 예외 선언에 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(); // Other code here } catch(xms::Exception & ex) { // Error handling code here nRC = -1; } return(nRC); }
그러므로 응용프로그램이 이 기술을 사용하여 XMS 예외를 발견할 경우 응용프로그램은 값이 아니라 참조별로 예외를 발견해야 합니다. 그렇게 하면 예외가 조각나지 않고 오류에 대한 중요한 데이터가 손실되지 않습니다.
Exception 클래스 자체는 std::exception 클래스의 서브클래스입니다. 그러므로 C++ 런타임 환경에서 처리하는 예외를 포함하여 모든 예외를 발견하기 위해 응용프로그램은 발견 구성의 예외 선언에 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); // Additional code here } catch(exception & ex) { // Error handling code here nRC = -1; } return(nRC); }
응용프로그램은 XMS 예외를 발견한 후 Exception 클래스의 메소드를 사용하여 오류에 대한 정보를 찾을 수 있습니다. 이러한 메소드의 정의는 Exception을 참조하십시오. XMS 예외에 의해 캡슐화된 정보는 기본적으로 오류 블록에 있는 C 응용프로그램에 제공된 정보와 같습니다. 자세한 정보는 오류 블록을 참조하십시오.
XMS 호출 도중 둘 이상의 오류를 발견하면 XMS 각 오류에 대한 예외를 작성하고 예외를 링크하여 체인을 구성할 수 있습니다. 응용프로그램은 첫번째 예외를 발견한 후 getLinkedException() 메소드를 호출하여 포인터를 체인의 다음 예외로 가져갈 수 있습니다. 응용프로그램은 널 포인터가 리턴하여 체인에 더 이상 예외가 없음을 표시할 때까지 각 예외에 대해 getLinkedException() 메소드를 계속 호출할 수 있습니다.
getLinkedException() 메소드가 포인터를 링크 예외로 돌려보내므로 C++ 삭제 연산자를 사용하여 오브젝트를 릴리스하는 것은 응용프로그램이 담당합니다.
Exception 클래스는 응용프로그램에서 지정된 C++ 출력 스트림에 예외를 형식화된 텍스트로 덤프하는 데 사용할 수 있는 dump() 메소드를 제공합니다. << 연산자는 Exception 클래스에 오버로드되며 같은 목적으로 사용할 수 있습니다.