多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 基本使用 * 如果在try段执行期间没有引起异常,那么跟在try后面的catch字句就不会执行。 * catch子句会根据出现的先后顺序被检查,匹配的catch语句捕获并处理异常(或继续抛出异常) * 如果匹配的处理未找到,则运行函数terminate将自动被调用,其缺省功能调用abort终止程序。 * 处理不了的异常,可以在catch的最后一个分支,使用throw,向上抛。 ~~~ int MyDivide(int a, int b) { if (b == 0) { //抛出异常 throw 10; //抛出一个int类型的异常 } return a / b; } void test02() { int a = 10; int b = 0; try { MyDivide(a, b); } catch (int e) { //捕获一个int类型的异常 cout << "异常是: " << e << endl; } } ~~~ **异常不能忽略** **异常可以根据类型catch** ~~~ class Maker { public: void printMaker() { cout << "除数不能为零" << endl; } }; int func(int a, int b) { if (b == 0) { //Maker m; //throw m;//抛出一个Maker类型的异常 throw 20.22;//抛出一个double类型的异常 } return a / b; } void test02() { int a = 10; int b = 0; try { func(a, b); } catch (int) { cout << "接收一个int类型的异常" << endl; } catch (Maker maker) { cout << "接收一个Maker类型的异常" << endl; maker.printMaker(); } catch (double s) { //没有能力解决,就向上抛 cout << "不想处理异常,可以往上抛出,抛给调用本函数的函数" << endl; throw; } } ~~~