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

C++에서는 사용자가 정의한 예외 클래스를 만들어 예외 처리를 수행할 수 있습니다.

사용자 정의 예외 클래스 만들기

사용자 정의 예외 클래스를 만들 때에는 std::exception 클래스를 상속받아야 합니다. 그리고 예외 발생 시에 반환할 에러 메시지를 포함하는 what() 메서드를 오버라이딩해야 합니다.

아래는 간단한 사용자 정의 예외 클래스의 예시입니다.

#include <exception>
#include <string>

class MyException : public std::exception {
public:
    MyException(const std::string& message) : m_message(message) {}

    virtual const char* what() const throw() {
        return m_message.c_str();
    }

private:
    std::string m_message;
};

위의 예시에서 MyException 클래스는 std::exception 클래스를 상속받고, what() 메서드를 오버라이딩하여 예외 발생 시에 반환할 메시지를 설정하고 있습니다.

사용자 정의 예외 처리하기

사용자 정의 예외를 발생시키고 처리하는 예시는 아래와 같습니다.

#include <iostream>

void someFunction() {
    throw MyException("Something went wrong!");
}

int main() {
    try {
        someFunction();
    } catch (const MyException& e) {
        std::cout << "Caught MyException: " << e.what() << std::endl;
    }

    return 0;
}

위의 예시에서 someFunction()에서 MyException을 던지고, main() 함수에서 이를 잡아서 처리하고 있습니다.

사용자 정의 예외 클래스를 사용하면 특정한 예외 상황에 대해 자세한 정보를 담은 예외 객체를 만들어 예외 처리를 더욱 유연하게 할 수 있습니다.

참고 자료