c++의 예외 처리는 try
, catch
, throw
로 가능합니다. 각각 예외를 발견, 처리, 던지는 역할을 합니다.
try {
if (num == 0)
throw num;
cout << "실행되지 않음" << endl;
}
catch (int expn) {
// 예외 처리
}
- throw가 실행되면 바로 catch 블록으로 넘어갑니다.
- 즉, throw의 밑에 있는 코드는 실행되지 않습니다.
void message() {
throw std::runtime_error("런타임 에러");
}
try {
message();
}
catch (std::exception e) {
cout << e.what() << endl;
}
// expected output
런타임 에러
-
try 내의 함수에서 예외를 던져도 catch가 실행됩니다.
-
만약 message 함수내에서 실행한 함수에서 예외를 던져도 catch가 실행됩니다.
-
사용자가 정의하지 않은 예외 클래스는 std::exception으로 대부분 받을 수 있습니다.
-
what() 함수는 던져진 예외의 인자로 받은 문자열을 의미합니다.