// ============================================================================ // p1c07_02 — 7.2.1 异常基本语法 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; #include static inline void pause() { printf("按回车键继续..."); (void)getchar(); } // --- 原文片段 [58954474:1] 7.2.1 异常基本语法 --- int A_MyDivide(int a, int b){ if (b == 0){ throw 0; } return a / b; } //B写的代码 B写代码比较粗心,忘记处理异常 int B_MyDivide(int a, int b){ int ba = a; int bb = b; int ret = A_MyDivide(ba, bb) + 100; //由于B没有处理异常,导致B结果运算错误 return ret; } //C写的代码 int C_MyDivide(){ int a = 10; int b = 0; int ret = 0; //没有处理异常,程序直接中断执行 #if 1 ret = B_MyDivide(a, b); //处理异常 #else try{ ret = B_MyDivide(a, b); //更严重的是,由于B没有继续抛出异常,导致C的代码没有办法捕获异常 } catch (int e){ cout << "C_MyDivide Call B_MyDivide 除数为:" << e << endl; } #endif return ret; } int main(){ C_MyDivide(); pause(); return EXIT_SUCCESS; } // --- main ---