C++은 구조적으로 예외를 처리할 수 있는 메커니즘을 제공한다.
try 블록
try
{
//예외발생 예상지역
}
catch 블록
catch(처리할 예외의 종류 명시)
{
//예외처리 코드의 삽입
}
try, catch 블록은 하나의 문장이다. 중간에 다른 문장이 오면 안된다.
try
{
...
}
std::cout << "Hello world " << std::endl; // 컴파일 애러!!
catch
{
...
}
throw
expn 은 변수, 상수 그리고 객체등 표현 가능한 보든 데이터가 될 수 있으나, 예외상황에 대한 정보를 담은, 의미 있는 데이터이어야 한다. 그래서 위 문장에서 expn의 위치에 오는 데이터를 가리켜 그냥 ‘예외’라고 표현하기도 한다.
try
{
...
if (예외)
throw expn;
}
catch (type exn)
{
//예외의 처리
}
예외가 발생하면 에외가 발생한 지점 이휴를 실행하는 것이 아니라, catch 블록의 이후가 실행됨을 보인다. 예외가 발생한 지점 이휴의 try 영역은 그냥 건너뛴게 된다.