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

C++에서는 사용자 정의 예외 클래스를 디자인하여 특정 상황에서 예외를 던질 수 있습니다. 사용자 정의 예외 클래스를 디자인하고 활용하는 방법에 대해 알아봅시다.

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

사용자 정의 예외를 만들기 위해서는 std::exception 클래스를 상속받는 새로운 클래스를 정의합니다. 예를 들어, 아래와 같이 CustomException이라는 예외 클래스를 정의할 수 있습니다.

class CustomException : public std::exception {
public:
    CustomException(const char* message) : m_message(message) {}
    
    const char* what() const noexcept override {
        return m_message;
    }

private:
    const char* m_message;
};

2. 사용자 정의 예외 클래스 활용하기

이제 CustomException 클래스를 사용하여 예외를 던지는 예제를 살펴봅시다.

void someFunction() {
    // 예외 상황 발생 시
    throw CustomException("Something went wrong!");
}

int main() {
    try {
        someFunction();
    } catch (const CustomException& ex) {
        std::cout << "Caught custom exception: " << ex.what() << std::endl;
    }
    return 0;
}

위 예제에서는 someFunction()에서 CustomException을 던지고, main() 함수에서 해당 예외를 잡아서 처리하는 방법을 보여줍니다.

3. 사용자 정의 예외 클래스에 추가 정보 포함하기

가끔은 예외 발생 시 추가 정보를 포함해야 하는 경우가 있습니다. 이를 위해 사용자 정의 예외 클래스에 멤버 변수를 추가하여 예외 정보를 저장할 수 있습니다.

예를 들어, 다음과 같이 사용자 정의 예외 클래스를 확장할 수 있습니다.

class CustomException : public std::exception {
public:
    CustomException(const char* message, int errorCode) : m_message(message), m_errorCode(errorCode) {}
    
    const char* what() const noexcept override {
        return m_message;
    }

    int getErrorCode() const {
        return m_errorCode;
    }

private:
    const char* m_message;
    int m_errorCode;
};

결론

C++에서는 사용자 정의 예외 클래스를 만들어 특정 상황에서 예외를 던질 수 있습니다. 이를 통해 보다 구체적인 예외 정보를 제공하고, 예외를 적절하게 처리할 수 있습니다.

더 많은 정보를 원하시면 C++ 공식 문서를 참고하세요.

관련 참고 자료: