自定义out_of_range异常

时间:2016-10-27 06:24:43

标签: c++ c++11

我想通过定义自己的构造函数和向用户输出自定义错误消息的print()方法来编写一个继承自基类异常类out_of_range的StrExcept异常类。

现在这是我的代码:

class StrExcept: public out_of_range
{
string message;

public:


StrExcept():out_of_range("The value entered is out of range"),message("The value entered is out of range"){};

void print(){
    cout << message;
}

};

内部主要方法:

try
{
    string str="My name";
    // the exception will be fired
    str.substr(11,2);
}
// i want to catch it using this custom class
catch (StrExcept &outOfRange )
{
    // i want to print the error message using print method
   outOfRange.print();

}

但为什么不工作?和程序崩溃???

1 个答案:

答案 0 :(得分:2)

仅仅因为你从一个类派生并不意味着已经存在的代码(例如basic_string::substr的实现)将使用它。该函数将抛出std::out_of_rangecatch(const StrExcept&)只会捕获类型StrExcept的异常或从它派生的类,这不是抛出的类。