自定义异常类的 C++ 语法

标签 c++ exception custom-exceptions

<分区>

我是 C++ 的新手,发现了以下代码片段,用于从 std::exception 扩展的自定义异常。我唯一不明白的部分是构造函数定义之后的 : err_msg(msg) {}。谁能解释为什么 this 不在函数大括号中?

class my_exception : public std::exception {
  private:
    std::string err_msg;

  public:
    my_exception(const char *msg) : err_msg(msg) {};
    ~my_exception() throw() {};
    const char *what() const throw() { return this->err_msg.c_str(); };
};

最佳答案

成员 err_msg 已经被初始化列表初始化。

my_exception(const char *msg) : err_msg(msg) {};
//                         here ^^^^^^^^^^^^

因此,构造函数无事可做。


旁注:有一些关于不在异常中使用 std::string 的讨论。只需谷歌搜索或查看 here .

关于自定义异常类的 C++ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681289/

相关文章:

c++ - 为什么 boost::property_tree::read_xml 抛出读取有效的 Office Open XML?

c++ - 程序异常输出

exception - 无法加载文件或程序集 'System.Web' 或其依赖项之一。访问被拒绝

c++ - 使用 Crypto++ 的 AES 实现

Android 和引入自己的自定义 key 存储的异常

c++ - 无法捕获的自定义异常 C++

java - 正在用java开发API,所以我需要处理异常,我的customException类扩展了异常或运行时异常的类

python - 如何引发我的异常而不是内置异常?

c++ - 一元 * 运算符的操作数是否期望纯右值

Java 与 C++(按引用调用?)