C++에서는 사용자가 직접 예외를 정의하여 처리할 수 있습니다. 사용자 정의 예외 클래스를 만들어서 프로그램에서 특정 상황을 처리하는 데 유용하게 활용할 수 있습니다.
이번 게시물에서는 C++에서 사용자 정의 예외 클래스를 어떻게 만들고 활용하는지에 대해 살펴보겠습니다.
사용자 정의 예외 클래스 만들기
C++에서 사용자 정의 예외 클래스를 만들기 위해서는 std::exception
클래스를 상속받아 새로운 예외 클래스를 정의해야 합니다. 예를 들어, 정수를 나누는 도중에 0으로 나누는 예외를 처리하기 위한 DivideByZeroException
클래스를 만들어보겠습니다.
다음은 DivideByZeroException
클래스의 예시 코드입니다.
#include <exception>
class DivideByZeroException : public std::exception {
public:
const char* what() const throw() {
return "Error: Dividing by zero";
}
};
위의 코드에서 DivideByZeroException
클래스는 std::exception
클래스를 상속받고 있으며, what
메서드를 오버라이딩하여 예외 상황에 대한 설명을 반환하도록 구현되어 있습니다.
사용자 정의 예외 처리하기
사용자 정의 예외를 처리하기 위해서는 try-catch
블록을 사용하여 예외를 잡아내고 처리할 수 있습니다. 아래는 DivideByZeroException
예외를 처리하는 예시 코드입니다.
int divide(int numerator, int denominator) {
if (denominator == 0) {
throw DivideByZeroException();
}
return numerator / denominator;
}
int main() {
int a = 10;
int b = 0;
try {
int result = divide(a, b);
std::cout << "Result: " << result << std::endl;
} catch (const DivideByZeroException& e) {
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}
위의 코드에서 divide
함수에서 0으로 나누는 예외가 발생할 경우 DivideByZeroException
예외가 던져지고, main
함수에서 이를 catch
하여 예외를 처리하고 있습니다.
결론
이렇게 C++에서는 사용자 정의 예외 클래스를 만들어 프로그램의 유연성을 높일 수 있습니다. 예외 클래스를 효과적으로 활용하여 예외 상황을 명확하게 처리할 수 있도록 코드를 작성하는 것이 좋습니다.
더 많은 정보를 원하시는 경우 C++ 공식 문서를 참고하세요.