3. 异常捕获处理 :
捕获异常类型 : MyException& my // 4. 抛出自定义异常 // 捕获该对象 , 并执行其中的方法 try { throwMyException(); } catch (MyException& my) { cout << " 捕获了 自定义 MyException 异常对象 : " << my.what() << endl; }
4. 代码执行结果 :
捕获了 自定义 MyException 异常对象 : 自定义异常 MyException what 异常信息
VI 异常相关代码
定义 抛出异常的方法 和 自定义异常类 :
//抛出字符串异常的方法 void throwString() { throw "throwStringException 抛出异常字符串"; } //抛出任意类型对象异常的方法 void throwException() { throw exception("throwException 抛出异常对象"); } //抛出任意类型对象异常的方法 void throwChildObject() { throw Child(); } //自定义异常 class MyException : public exception { public : virtual char const* what() const { return "自定义异常 MyException what 异常信息"; } }; //抛出自定义异常 void throwMyException() { throw MyException(); }
捕获处理异常代码 :
// X . 异常 // 1. 捕获字符串异常 try { throwString(); } catch (const char* c) { cout << " 捕获了字符串异常 " << c << endl; } // 2. 捕获异常对象 // 其中调用 exception 的 what() 方法即可获得异常信息 // 可以获取异常信息 , 即构造函数中传入的字符串 try { throwException(); } catch (exception &e) { cout << " 捕获了异常对象 " << e.what() << endl; } // 3. 抛出任意对象 // 捕获该对象 , 并执行其中的方法 try { throwChildObject(); } catch (Child& child) { cout << " 捕获了 Child 异常对象 , 调用其方法 : " << endl; child.function(); } // 4. 抛出自定义异常 // 捕获该对象 , 并执行其中的方法 try { throwMyException(); } catch (MyException& my) { cout << " 捕获了 自定义 MyException 异常对象 : " << my.what() << endl; }
执行结果 :
捕获了字符串异常 throwStringException 抛出异常字符串 捕获了异常对象 throwException 抛出异常对象 捕获了 Child 异常对象 , 调用其方法 : 子类方法 捕获了 自定义 MyException 异常对象 : 自定义异常 MyException what 异常信息