예외 목록 트리는 자체 상관 이름인 예외 목록을 가지므로, 이 트리의 컨텐츠를 참조하거나 설정하는 모든 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 샘플의 서브플로우를 참조하십시오.