如何在成员函数中正确抛出char *异常?

时间:2018-03-31 20:43:29

标签: c++ exception

我在处理异常时遇到了一些麻烦。所以,我有一个测试程序应该捕获一个char *异常,我不知道在成员函数中抛出异常。我想它会是这样的: 抛出“不能成为负数”; 但无论我尝试什么,我都会收到错误消息“以char const *类型的未捕获异常终止”。

非常感谢你们,我是新手!

2 个答案:

答案 0 :(得分:2)

直接抛出char*是一个坏主意。是的,C ++标准在技术上允许它,但在实践中它很少有用。您应该抛出std::exception派生类,例如std::out_of_range

throw std::out_of_range("pos cant be a negative number");

然后你可以按类型抓住它:

catch (const std::out_of_range &e) {
    std::cerr << e.what() << std::endl;
}

或者:

catch (const std::logic_error &e) {
    std::cerr << e.what() << std::endl;
}

或者:

catch (const std::exception &e) {
    std::cerr << e.what() << std::endl;
}

答案 1 :(得分:0)

添加const就可以了,感谢很多人!