Exception Handling
: 프로그램 실행 중에 예상치 못한 일(예외)가 발생
- 프로그램에 의해 발생하는 예외들
- 처리(handling)하지 못하면 프로그램이 종료(abort)된다.
- ex) divide by zero, index out of bound
예외처리 고려해야될 사항 & 처리되는 과정
- 어떤 상황을 예외로 생각할 것인가
- OS 에서 미리 정의된 예외 : pre-defined
- OS 모든 프로그램에서 공통 적용
- 감지, 알림, 처리 → OS에서 미리 정의
- 사용자 지정 예외
- 정의, 감지, 알림, 처리 → 모두 사용자가 지정해야함
- 예외를 감지하고 알려야 된다.
- 에외를 처리하는 방식 (catch, handling)
- OS 에서 예외를 처리하는 기능을 설정해 주지않으면 → abort 종료
- 예외 처리 후에는 어떻게 할 것인가 (finally)
Abort(Core Dump)
- 예외가 발생한 지점으로 부터 propagation이 계속 진행되서 main 함수까지 왔지만 예외를 처리하지 못하는 경우
- Core : Linux 에서 메인 memory
- Core Dump : 현재 메모리에 있는 내용을 파일로 덮어씌움
예외 처리 예시

- begin, end → C 에서
{ }
를 의미
- when … → catch ( … ) 처럼 사용
- 예외 처리 handler 가 예외를 처리한 후 방식 (OS마다 상이함)
- 예외가 발생한 시점으로 돌아가 다시 실행
- 예외가 발생한 시점 다음부터 다시 실행 → Unix/Linux
- 예외가 발생한 block 을 빠져나와 다음 block 부터 실행 → Java : catch 이후
- 그냥 종료
C++ 에서 예외처리
- ANSI C++ 에서 예외처리를 정함
- CLU , Ada, ML 의 예외처리를 기반으로함
try {
// 예외가 발생할 수도 있는 코드
} catch(formal parameter) {
// 예외타입에 따라 처리방식 설정
}
catch(formal parameter) { // 예외 방식 명시
// 예외타입에 따라 처리방식 설정
}
Python 이나 C# 의 예외처리