예외 목록(ExceptionList) 트리에 액세스

예외 목록 트리는 자체 상관 이름인 예외 목록을 가지므로, 이 트리의 컨텐츠를 참조하거나 설정하는 모든 ESQL문에서는 이를 사용해야 합니다.

이 트리는 입력 메시지가 구문 분석될 때 논리적 트리로 작성됩니다. 처음에는 공백이며, 메시지 플로우 처리 중 예외가 발생하는 경우에만 채워집니다. 예외가 두 번 이상 발생할 수 있는데, 이러한 경우 예외 목록 트리는 각 예외에 대해 서브트리를 포함합니다.

Compute, Database 및 Filter 노드에서 예외 목록 트리에 액세스할 수 있으며 Compute 노드에서 이 트리를 갱신할 수 있습니다. 적절한 상관 이름을 사용해야 합니다(Database나 Filter 노드의 경우 Exception List, Compute 노드의 경우 InputExceptionList).

오류 핸들링 프로시저에 있는 노드에서 이 트리에 액세스하려 할 수 있습니다. 예를 들면, 메시지를 예외 유형에 따라 다른 경로로 라우트하려 할 수 있습니다(예를 들면, ESQL THROW문을 사용하여 명시적으로 생성하거나 브로커가 생성한 경우에 따라).

다음 ESQL은 예외 목록에 액세스하고 포함된 각 하위를 처리할 수 있는 방법을 보여줍니다.

-- Declare a reference for the ExceptionList
-- (in a Compute node use InputExceptionList)
DECLARE start REFERENCE TO ExceptionList.*[1];

-- Loop through the exception list children
WHILE start.Number IS NOT NULL DO 
      -- more ESQL

   -- Move start to the last child of the field to which it currently points 
      MOVE start LASTCHILD;
        END WHILE;         

아래의 두 번째 예에서는 Compute 노드가 마지막 중첩된 예외 설명까지 예외 목록을 순환하여 오류 번호를 추출하도록 코딩한 ESQL을 보여줍니다. 이 오류는 문제 발생 원인과 관련이 있으며 일반적으로 가장 정확한 정보를 제공합니다. 메시지 플로우에서 수행하는 후속 조치는 이 방법으로 검색된 오류 번호에 의해 결정할 수 있습니다.

CREATE PROCEDURE getLastExceptionDetail(IN InputTree reference,OUT messageNumber integer,
OUT messageText char)
    /****************************************************************************
* A procedure that will get the details of the last exception from a message
	 * IN InputTree:  The incoming exception list
* IN messageNumber: The last message numberr.
* IN messageText: The last message text.
	 *****************************************************************************/
     BEGIN
   -- Create a reference to the first child of the exception list
   declare ptrException reference to InputTree.*[1];
   -- keep looping while the moves to the child of exception list work 
		WHILE lastmove(ptrException) DO
-- store the current values for the error number and text
			IF ptrException.Number is not null THEN
        SET messageNumber = ptrException.Number;
        SET messageText = ptrException.Text;
          END IF;
  -- now move to the last child which should be the next exceptionlist
			move ptrException lastchild;
END WHILE; 
	END;

예외 목록 사용에 관한 자세한 정보는 예외 목록의 구조를 조사하고 해당 컨텐츠에 따라 특정 조치를 수행하는 ESQL을 포함하는 Error Handler 샘플의 서브플로우를 참조하십시오.

관련 개념
메시지 플로우 개요
예외 목록 트리 구조
ESQL 개요
메시지 모델링
관련 태스크
메시지 플로우 내의 오류 핸들링
메시지 플로우 설계
메시지 플로우 컨텐츠 정의
ESQL 파일 관리
관련 참조
Compute 노드
예외 목록(ExceptionList) 구조
ESQL 참조
DECLARE문
EVAL문
WHILE문
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac16830_