企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
① 标准库中的异常是有限的; ② 在自己的异常类中,可以添加自己的信息。(标准库中的异常类值允许设置一个用来描述异常的字符串)。 如何编写自己的异常类? ① 建议自己的异常类要继承标准异常类。因为C++中可以抛出任何类型的异常,所以我们的异常类可以不继承自标准异常,但是这样可能会导致程序混乱,尤其是当我们多人协同开发时。 ② 当继承标准异常类时,应该重载父类的what函数和虚析构函数。 ③ 因为栈展开的过程中,要复制异常类型,那么要根据你在类中添加的成员考虑是否提供自己的复制构造函数。 ~~~ #include <stdexcept> //2013的vs以上可以不用 class MyOut_of :public exception { public: string m_Info; public: MyOut_of(const char *errorinfo) { //const char*转换string this->m_Info = string(errorinfo); } MyOut_of(const string errorinfo) { this->m_Info = errorinfo; } const char* what() const { //把string转换为const char* return this->m_Info.c_str(); } }; class Maker { public: int age; public: Maker(int age) { if (age<0 || age>150) { throw MyOut_of("年龄不在访问范围内-自己的异常类"); } else { this->age = age; } } }; void test01() { try { Maker m(-1); } catch (MyOut_of &ex) { cout << ex.what() << endl; } } ~~~