C++은 구조적으로 예외를 처리할 수 있는 메커니즘을 제공한다.

C++의 예외처리 메커니즘 이해: try와 catch 그리고 throw의 이해

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 영역은 그냥 건너뛴게 된다.