예외 처리
- 예외(exception)
- 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 오류가 발생하여, 실행되고 있던 프로그램이 중지되는 것
- 예외 처리(exception handling)
- 예외 상황을 처리할 수 있도록 코드의 흐름을 바꾸는 행위
- C++은 언어 차원에서 예외 처리 문법을 제공한다.
try, throw, catch 문
- 예외 처리 구문
- try 문
- 예외가 발생할 가능성이 있는 코드 블록
- throw 문
- try 문에서 발생한 오류에 대한 정보를 전달
- catch 절
- 발생한 예외에 대해 예외 핸들러가 처리할 내용을 담은 코드 블록
- 자신이 처리할 수 있는 예외 타입을 지정할 수 있다.
- 특정 예외 타입 대신에 줄임표(…)를 사용할 수 있다.
- 이러한 줄임표를 사용한 catch 절의 위치는 언제나 catch 절 중 맨 마지막에 위치해야 함.
- 특정 예외 타입 대신에 줄임표(…)를 사용할 수 있다.
- try 문
예외 처리 메커니즘
- try문에 도달해 해당 코드를 실행함
- 예외 발생 X : catch절 다음의 코드로 이동
- 예외 발생 O : 적절한 catch절을 찾는다.
- 스택에서 try문과 가장 가까운 catch절부터 체크
- 적절한 catch절 발견 X
- 적절한 catch문을 못찾으면, 바로 다음 바깥쪽 try문 다음의 catch절을 차례로 체크
- 가장 바깥쪽 try문까지 계속 체크
- 끝까지 적절한 catch절을 못찾았다면, 미리 정의된 terminate() 함수가 호출됨
- 적절한 catch절 발견 O
- throw문의 피연산자는 예외 객체의 형식 매개변수로 전달됨
- 모든 예외 처리가 끝나면 catch절 바로 다음으로 이동.