我在处理异常时遇到了一些麻烦。所以,我有一个测试程序应该捕获一个char *异常,我不知道在成员函数中抛出异常。我想它会是这样的: 抛出“不能成为负数”; 但无论我尝试什么,我都会收到错误消息“以char const *类型的未捕获异常终止”。
非常感谢你们,我是新手!
答案 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就可以了,感谢很多人!