예외처리는 크게 세 부분으로 이루어져 있다
try : 예외처리가 일어날 구역을 정해준다. 예를들어, 나눗셈이 있는 구간에만 try{}문으로 묶어서 divide by zero를 처리해주거나
메모리를 사용하는 부분에서 간혹 참조하는 부분이 할당되지 않은 메모리를 건드리는 경우가 있을때, 이 구역을 try문으로 미리묶어서 runtime error가 일어날 수 있는 부분을 넘겨 줄 수 있고 미리 logical error가 날지 모르는 상황을 logical이라고 잡아주는 경우가 있다.
throw : try문 안에서 throw문이 발생할 경우, catch문의 parameter가 되는 descrtion에 에러메시지를 넘겨준다. 대개
if(에러조건) throw(에러메시지)와 같은 형태로 사용한다.
catch : parameter로 에러메시지를 받는 함수로 try문 바로 아래에 위치한다. throw문을 출력하고 해당 프로그램을 계속해서 실행하
도록 해준다.
이러한 예외처리는 어떤 오류가 일어났는지 확인하고 프로그램을 종료할 수 있다. 혹은 역으로 에러메시지를 보고 어느 try구간에서 에러가 났는지 찾아가기 유용하다. 혹은 말 그대로 예외를 처리하는데에도 유용하다.
여기서는 호출하는 함수 안에 throw문을 넣어 미리 logical을 예방하도록 했다.
이 예제는 동적할당에 있어서 예외발생을 다루고 있다. 동적할당에서는 해당변수를 할당하고 이를 해제하는 과정이 중요하다.
그런데 이 상황에서는 정상적인 변수를 넘겨주지 않아 예외가 발생하고 이 예외를 처리하고 있다.
그런데 이 예외에서는 반드시 동적할당이기에 이 변수를 다시 해제해줘야한다. 그렇기에 catch문의 내부에 동적할당된 변수를 해제하는 내용이 포함되어 있다.
'C++ 쓸려고하면 헷갈리는 것들(오답노트)' 카테고리의 다른 글
제 1장 연산자 overloading - 2 (0) | 2018.04.11 |
---|---|
제 1장 연산자 overloading - 1 (0) | 2018.04.08 |