c++ - 滚动我自己的异常(exception)

标签 c++ exception

我正在编写一些将抛出自定义异常的新代码 - 我想包含一个错误字符串和一个状态代码。哪个类应该是异常派生的? 标准::异常std::runtime_error?还有其他需要担心的“问题”吗?我正在考虑以下内容:

class MyException : public std::exception(?)
{
public:
    enum Status
    {
        ERROR_FOO,
        ERROR_BAR,
        ...
    };

    MyException(const std::string& error, Status code) :
        error_(error), code_(code)
    {
        ...
    }

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

    Status code() const
    {
        return code_;
    }
private:
    std::string error_;
    Status code_;
};

然后在代码中:

throw MyException("Ooops!", MyException::ERROR_BAR);

最佳答案

Boost 在 error and exception 上有一个很棒的文档handling 讨论了常见的陷阱以及如何正确地从 std::exception(s) 继承。

关于c++ - 滚动我自己的异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336475/

相关文章:

c++ - 按值从 C++ 传递到 C 的复数似乎在 powerpc 上不起作用

c++ - 可移植 ntohl 和 friend

c++ - 让一个函数共享一个枚举类命名空间的方法?

c++ - 在 C++ 中哪些操作不能抛出异常?

python - 为什么 python 异常通常不打印违规值?

C++:根据变量将同一对象实例化为多种类型之一

c++ - 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置

java 。限制日期的值

java - 断言 java 中私有(private)方法抛出异常的另一种方法

c# - 如何用 resume 实现一个 "catch' em all"异常处理程序?