예외처리
- if를 사용하면 쉽겠지만, C++에는 별도의 예외처리 메커니즘이 존재한다.
- try: 예외를 발견
- catch: 예외를 잡기
- throw: 예외를 던지기
- try 블록은 예외발생에 대한 검사의 범위를 지정할 때 사용한다. 즉, try 블럭 내에서 예외가 발생하면 C++의 예외처리 메커니즘에 의해 처리된다.
- catch 블록은 try에서 발생한 예외를 처리하는 코드가 담기는 영역으로, 형태가 반환형이 없는 함수와 유사하다.
- catch 블록은 try블록 뒤에 이어서 등장하며, try에서 발생한 예외는 이곳 catch에서 처리된다. 즉, try와 catch는 하나의 문장이다.
- 만일 catch의 매개변수로 catch(...)을 한다면 전달되는 모든 예외를 받겠다는 뜻이다.
- throw는 예외 발생 시 발생을 알린다.
try
{
if(num2 == 0)
throw num2;
. . .
}
catch(int expn)
{
// 예외처리 코드
}
스택 풀기
- 예외처리의 책임은 호출된 함수가 책임진다. 만일, 예외가 처리되지 않아서 함수를 호출한 영역으로 예외 데이터가 전달되는 현상을 가리켜 '스택풀기'라고 한다.
- 자료형이 일치하지 않아도, 예외 데이터는 전달된다.