c++ - 함수 - std::exception example




C++에는.NET의 NotImplementedException과 동일한 기능이 있습니까? (4)

@dustyrockpyle의 정신에서, 나는 std::logic_error 로부터 상속을 std::logic_error 그러나 나는 그 클래스의 문자열 생성자를 사용한다. what() 보다 what()

class NotImplemented : public std::logic_error
{
public:
    NotImplemented() : std::logic_error("Function not yet implemented") { };
};

C ++의 표준 라이브러리에 .NET의 NotImplementedException과 동일한 예외가 있습니까?

그렇지 않다면 나중에 완료하려고하는 불완전한 방법을 처리하는 가장 좋은 방법은 무엇입니까?


std :: logic_error에서 상속 받아 다음과 같이 오류 메시지를 정의 할 수 있습니다.

class NotImplementedException : public std::logic_error
{
public:
    virtual char const * what() const { return "Function not yet implemented."; }
};

이 방법을 사용하는 것이 실제로 가능한 경우 예외를 더 명확하게 잡는 것이라고 생각합니다. std :: logic_error에 대한 참조 : http://www.cplusplus.com/reference/stdexcept/logic_error/


응용 프로그램이 필요하지 않은 경우 구현되지 않은 메서드에 대한 예외를 포함하여 자체 예외 집합을 정의하는 것이 좋습니다. 예외를 throw하는 호출자가 오류를 일정한 방식으로 catch 할 수 있도록 std::exception 에서 예외 유형을 상속해야합니다.

NotImplementedException 를 구현하는 한 가지 가능한 방법은 다음과 같습니다.

class NotImplementedException
    : public std::exception {

public:

    // Construct with given error message:
    NotImplementedException(const char * error = "Functionality not yet implemented!")
    {
        errorMessage = error;
    }

    // Provided for compatibility with std::exception.
    const char * what() const noexcept
    {
        return errorMessage.c_str();
    }

private:

     std::string errorMessage;
};

이것은 응용 프로그램의 의미를 가지지 않는 일시적인 예외이기 때문에 char const *를 던질 수 있습니다.

int myFunction(double d) {
    throw "myFunction is not implemented yet.";
}




exception-handling