try

EGL try 문은 end 구분 기호로 끝나는 try 블록의 시작을 표시합니다. try 문은 try 블록에 있는 다음 명령문 중 하나로 인해 오류가 발생하는 경우에도 프로그램이 계속 실행되도록 합니다.
  • 입출력(I/O) 명령문
  • 시스템 함수 호출
  • call

try 문은 파일 또는 레코드의 끝을 찾을 수 없는 경우와 같은 사소한 문제부터 하드 입출력(I/O) 오류와 같은 심각한 문제까지 코드에서 발생할 수 있는 모든 예외의 결과를 제어하는 기능을 제공합니다. 예외가 발생하면 예외 유형과 일치하는 onException 블록의 첫 번째 명령문에서 처리를 재개합니다. 이와 같이 수행하는 명확한 이유는 없지만 onException 블록을 생략할 수 있으며 이 경우 try 블록의 끝 이후 첫 번째 명령문에서 실행이 재개됩니다.

일반적인 try 블록에는 두 그룹의 명령문이 있습니다.
  • 오류 조건을 처리할 명령문. 해당 명령문은 try 키워드와 첫 번째 onException 키워드 사이에 있습니다. 해당 명령문에서 오류가 발생하지 않으면 onException 블록의 명령문은 무시됩니다.
  • 오류가 발생하는 경우 실행할 명령문. 해당 명령문은 첫 번째 onException 키워드와 첫 try 키워드와 일치하는 end 키워드 사이에 있습니다.

예외는 오류 지점에서 위로 전파됩니다. try 문은 중첩 깊이에 관계 없이 try 블록에서 호출된 모든 함수에서 발생하는 예외를 처리할 수 있습니다. 예외가 처리된 후 가장 가까운 엔클로징 try 블록이 제어를 얻습니다. onException 블록에서 일치하는 예외를 찾을 수 없는 경우에는 그 다음으로 높은 엔클로징 try 블록이 제어를 수신합니다. 추가 try 블록을 찾을 수 없는 경우 그 다음 실행문이 제어를 수신합니다.

예외 핸들링 프로세스에 대한 자세한 정보는 예외 핸들링의 내용을 참조하십시오.

구문

try
문의 구문 다이어그램
statement
EGL 명령문입니다.
exceptionRecordVariable
예외 스테레오타입("예외 스테레오타입" 참조)이 있는 레코드의 선언입니다. 이 레코드 변수는 레코드 유형이 예외의 유형과 일치하는 경우 예외의 가능한 추가 필드뿐 아니라 messageID메시지를 보유합니다.

호환성

표 1. try 문의 호환성 고려사항
플랫폼 문제
DL/I 데이터베이스 액세스 dliVar.handleHardDLIErrors 또는 vgVar.handlHardIOErrors가 1로 설정된 경우 DL/I 세그먼트의 try 블록에서 하드 입출력(I/O) 오류가 발생해도 프로그램은 계속 실행됩니다. 두 시스템 변수 모두 0으로 설정되거나 try 블록이 없는 경우에는 DL/I 세그먼트의 하드 입출력(I/O) 오류 발생 시 프로그램이 종료됩니다. dliVar.handleHardDLIErrors는 IMS™ 메시지 큐 또는 GSAM 파일과 연관된 직렬 레코드에 아무 영향도 주지 않습니다.
V60 예외 호환성
  • try 블록에 하나의 onException 블록만 있을 수 있으며 예외 유형을 지정할 수 없습니다.
  • sysLib.currentException 변수를 사용하여 문제점의 네이처를 판별할 수 있습니다. 이 변수는 V6 호환 모드에서만 사용 가능합니다.
  • 예외는 예외가 발생한 파트를 벗어나서 전파되지 않습니다. try 블록에서 호출한 함수에서 오류가 발생하는 경우 try 블록에 예외가 표시되지 않습니다.
  • handleHardIOErrors 프로그램 특성을 YES로 설정하지 않으면 하드 입출력(I/O) 오류 발생 시 애플리케이션이 종료됩니다. 이 경우 프로그램이 하드 입출력(I/O) 오류 자체를 처리할 수 있도록 EGL이 예외를 처리합니다.
VisualAge® Generator 호환 모드 vgVar.handlHardIOErrors가 1로 설정되면 데이터베이스 또는 파일 입출력(I/O)과 관련하여 try 블록에서 하드 입출력(I/O) 오류가 발생해도 프로그램이 계속 실행됩니다. vgVar.handlHardIOErrors가 0으로 설정되거나 try 블록이 없는 경우에는 데이터베이스 또는 파일 입출력(I/O)과 관련된 하드 입출력(I/O) 오류 시 프로그램이 종료됩니다. vgVar.handleHardIOErrors의 기본값은 1이지만 handleHardIOErrors 프로그램 특성을 NO로 설정하여 기본 설정 0을 제공할 수 있습니다. 이는 VisualAge Generator에서 기본값입니다.