메시지 처리의 종료가 필요한 메시지 플로우에서 오류 또는 기타 상황을 감지할 경우 다음 두 가지 방법으로 메시지 플로우에서 예외를 전달할 수 있습니다.
THROW문을 Compute, Database 또는 Filter 노드의 ESQL 모듈 아무 곳에나 포함시키십시오. 명령문에서 사용자 고유의 데이터를 예외에 삽입되도록 코드화하기 위한 옵션을 사용하십시오.
예외 컨텐츠 및 소스를 식별하도록 노드 등록 정보를 설정하십시오.
명령문 옵션이나 노드 등록 정보를 사용할 경우 메시지 텍스트에 삽입된 메시지 ID 및 값을 지정하여 예외를 해석하는 사용자에게 추가 정보 및 식별 기능을 제공할 수 있습니다. 브로커에 사용할 수 있는 카탈로그에서 메시지를 지정할 수 있습니다. 자세한 정보는 사용자 정의 확장에서 이벤트 로그 기록 사용을 참조하십시오.
예외를 발생시키려는 상황은 메시지 플로우의 작동에 의해 판별되므로; 메시지 플로우를 설계할 때 이 조치가 적절할 수 있는 위치를 결정하십시오. 예를 들면, 입력 메시지가 입력 노드(특정 메시지 형식이 수신되었는지 점검할 수 있는)에 의해 감지되지 않는 기준에 해당하는지 확인하기 위해 입력 메시지의 컨텐츠를 조사하고자 할 수 있습니다.
아래 예에서는 ESQL THROW문의 사용 방법을 표시하는 예시된 송장(invoice) 메시지를 사용합니다. 송장 번호가 특정 범위 내에 있는지 점검하려는 경우, 올바른 범위에 속하지 않은 송장 메시지가 수신된 경우 예외를 전달하십시오.
--Check for invoice number lower than permitted range IF Body.Invoice.InvoiceNo < 100000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES ('Invoice number too low', Body.Invoice.InvoiceNo); -- Check for invoice number higher than permitted range ELSEIF Body.InvoiceNo > 500000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES ('Invoice number too high', Body.Invoice.InvoiceNo); ELSE DO -- invoice number is within permitted range -- complete normal processing ENDIF;