예외 핸들링
- 파일, 큐 또는 데이터베이스에 액세스
- 다른 프로그램 호출
- 함수 호출
- 지정, 비교 또는 계산 수행
유형별로 처리할 예외를 선택하거나 동일한 코드를 가진 모든 예외를 처리할 수 있습니다. 예외를 처리하는 것은 현재 프로그램이 종료되지 않도록 하고 오류에 대한 특수 처리를 제공함을 의미합니다. 또한 기존 예외를 전파하거나 사용자에게 프로그램이 발견한 오류에 대해 경보를 보내기 위해 EGL throw 문을 사용하여 사용자 고유 예외를 트리거할 수 있습니다. throw을 참조하십시오.
EGL이 오류를 처리하기 위해 사용하는 메커니즘은 try 블록입니다(try 참조). try 블록 내부에서 예외를 처리하는 명령문을 실행하면 프로그램이 동일한 try 블록 내에서 일치하는 onException 블록을 검색합니다. 처리된 예외를 참조하는 onException 블록이 있는 경우 해당 블록의 코드에 제어가 전달됩니다.
예외는 원격으로 호출된 프로그램 또는 서비스 호출 외부로 전파되지 않습니다. 원격으로 호출된 프로그램이 오류로 인해 종료되면 InvocationException이 발생합니다. 서비스 호출이 오류로 인해 종료되면 ServiceInvocationException이 발생합니다. 두 유형 모두 원래 오류 설명을 포함합니다. 또한 InvocationException은 호출된 프로그램의 returnValue과 errno을 포함합니다(사용 가능한 경우).
예외는 보통 로컬로 호출된 프로그램 외부로 전파됩니다.
예외 핸들링의 이전 방법을 사용할 수도 있습니다. V6 예외 호환성 사용의 내용을 참조하십시오.
시스템 예외
EGL은 런타임 문제점의 특정 네이처를 표시하는 일련의 시스템 예외를 제공합니다. 이러한 모든 예외는 정보를 검색할 수 있는 예외 스테레오타입(예외 스테레오타입 참조)이 있는 레코드입니다. onException 블록에서 이 레코드 유형을 사용하여 특정 예외를 포착합니다.
- messageID
- EGL0050E와 같은 예외 ID를 포함하는 STRING입니다.
- 메시지
- "표현식 0 / 0에서 오버플로우"와 같은 예외 설명을 포함하는 STRING입니다. 오류가 EGL 버전 6에서 sysVar.errorCode를 설정한 오류인 경우 설명에 해당 오류 코드의 값이 포함됩니다(errorCode 참조).
if (userRequest == "A")
try
add record1;
onException(ex1 FileIOException)
myErrorHandler(1);
onException(ex2 RuntimeException)
myErrorHandler(2);
onException(ex3 SQLException)
myErrorHandler(3);
onException(ex4 AnyException)
myErrorHandler(4);
end // try
end // if
시스템 예외에 대한 세부사항은 EGL 예외 레코드의 내용을 참조하십시오.