C 에서는 예외처리를 오직 if/else 를 사용하여 처리했다. 프로그램의 규모가 커지면서 if/else 는 분기를 나누는데 적절한 구문이 되었고, 코드 가독성 등 효율을 위해 예외처리를 위한 구문이 필요해졌다. 그래서 생긴 것이 try catch
구문이다.
C++ 에는 C 와 다르게 예외 처리를 담당하는 객체가 있다. 바로 try, catch 구문이다.
#include <stdexcept>
void test(void)
{
try
{
// 진행할 코드 부분, 예외상황에서 error를 throw 함.
test1();
}
catch (const std::exception& e) // throw 를 받음.
{
//handle error
}
}
위 코드의 try { test1(); }
부분 이다. 해당 부분에서는 원하는 실행부를 넣는다. test1();
이라는 함수를 넣었다.
test1();
은 다음과 같은 함수다. if/else
로 문제가 있을 경우 에러를 throw
한다.
void test1(void)
{
if (/* there's an error */)
{
throw std::exception();
}
else
{
//Do some more stuff
}
}
throw
를 하면 위에서 봤던 catch
의 매개 변수로 예외를 받고, catch
구역에 있는 코드를 실행한다.
catch (const std::exception& e) // throw 를 받음.
{
//handle error
}