프로그램 실행 중에 발생할 수 있는 예외적인 상황을 처리하는 메커니즘을 제공합니다. C++의 예외 처리 모델은 다른 언어들과 비슷하게 try, catch, throw 키워드를 사용하여 구현됩니다.
catch(...)는 모든 예외를 처리하는 catch 블록입니다. 예외 객체의 타입에 관계없이 모든 예외를 잡습니다.
#include <iostream>
using namespace std;
void TestFunction(int value) {
if (value < 0) {
throw value; // int type으로 예외를 던짐
}
else if (value == 0) {
throw 0.0; // double type으로 예외를 던짐
}
cout << "Value is: " << value << endl;
}
int main() {
try {
int num;
cout << "Enter a number: ";
cin >> num;
TestFunction(num); // 예외가 발생할 수 있는 함수 호출
}
catch (int exception) { // int 타입 예외 처리
cout << "Caught 'num < 0' exception: " << exception << endl;
}
catch (double exception) { // double 타입 예외 처리
cout << "Caught 'num == 0' exception: " << exception << endl;
}
catch (...) { // 모든 예외 처리
cout << "An unknown exception occurred!" << endl;
}
return 0;
}
- std::exception 클래스는 모든 예외 클래스의 기본 클래스로, 다른 예외 클래스들은 이 클래스를 상속받습니다.
C++의 기본 예외 클래스를 제공하며, 예외 처리 메커니즘에서 예외 객체를 관리하는 기본적인 클래스인 std::exception 클래스 외에도 std::exception을 상속받은 여러 클래스들이 포함되어 있습니다.
std::exception을 상속받은 더 구체적인 예외 클래스를 제공합니다. 이 클래스들은 프로그램에서 자주 발생할 수 있는 특정한 오류 상황을 처리하는 데 유용합니다. 예를 들어, 잘못된 인자 값이나 범위를 벗어난 인덱스 등을 처리하는 데 사용되는 예외 클래스들이 이 라이브러리에 포함됩니다.