[c++] 사용자 정의 예외 클래스 만들기

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++ 공식 문서를 참고하세요.