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 블록을 찾을 수 없는 경우 그 다음 실행문이 제어를 수신합니다.
예외 핸들링 프로세스에 대한 자세한 정보는 예외 핸들링의 내용을 참조하십시오.
구문

- statement
- EGL 명령문입니다.
- exceptionRecordVariable
- 예외 스테레오타입("예외 스테레오타입" 참조)이 있는 레코드의 선언입니다. 이 레코드 변수는 레코드 유형이 예외의 유형과 일치하는 경우 예외의 가능한 추가 필드뿐 아니라 messageID와 메시지를 보유합니다.
호환성
| 플랫폼 | 문제 |
|---|---|
| DL/I 데이터베이스 액세스 | dliVar.handleHardDLIErrors 또는 vgVar.handlHardIOErrors가 1로 설정된 경우 DL/I 세그먼트의 try 블록에서 하드 입출력(I/O) 오류가 발생해도 프로그램은 계속 실행됩니다. 두 시스템 변수 모두 0으로 설정되거나 try 블록이 없는 경우에는 DL/I 세그먼트의 하드 입출력(I/O) 오류 발생 시 프로그램이 종료됩니다. dliVar.handleHardDLIErrors는 IMS™ 메시지 큐 또는 GSAM 파일과 연관된 직렬 레코드에 아무 영향도 주지 않습니다. |
| V60 예외 호환성 |
|
| 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에서 기본값입니다. |