C++ 异常处理C++ 内置了异常处理的语法元素 try … catch …try 语句处理正常逻辑代码catch 语句处理异常逻辑代码try 语句中的异常由对应的 catch 语句处理try{ double r = divide(1, 0);}catch(…){ cout << “Divided by zero …” << endl;}C++ 通过 throw 语句抛出异常double divide(double a, double b){ const double delta = 0.0000000000001; double ret = 0; if( !((-delta < b) && (b < delta)) ) { ret = a / b; } else { throw 0; // 产生除 0 异常 } return ret;}C++ 异常处理分析throw 抛出的异常必须被 catch 处理当前函数能够处理异常,程序继续向下运行当前函数无法处理异常,则函数停止执行,并返回未被处理的异常会沿着函数调用栈向上传播,直到被处理为止,否则程序将停止运行编程实验: C++ 异常处理初探#include <iostream>#include <string>using namespace std;double divide(double a, double b){ const double delta = 0.00000000000001; double ret = 0; if( !((-delta < b) && (b < delta)) ) { ret = a / b; } else { throw 0; } return ret;}int main(){ try { double r = divide(1, 0); cout << “r = " << r << endl; } catch(…) { cout << “Divided by zero …” << endl; } return 0;}输出:Divided by zero …同一个 try 语句可以跟上多个 catch 语句catch 语句可以定义具体处理的异常类型不同类型的异常由不同的 catch 语句负责处理try 语句中可以抛出任何类型的异常catch(…) 用于处理所有类型的异常任何异常都只能被捕获 (catch) 一次异常处理的匹配规则编程实验: 异常类型匹配#include <iostream>#include <string>using namespace std;void Demo1(){ try { throw ‘c’; } catch(short c) { cout << “catch(short c)” << endl; } catch(int c) { cout << “catch(int c)” << endl; } catch(char c) { cout << “catch(char c)” << endl; } catch(…) { cout << “catch(…)” << endl; }}void Demo2(){ throw “D.T.Software”;}int main(){ Demo1(); try { Demo2(); } catch(char* s) { cout << “catch(char* s)” << endl; } catch(const char* cs) { cout << “catch(const char* cs)” << endl; } catch(string ss) { cout << “catch(string ss)” << endl; } catch(…) { cout << “…” << endl; } return 0;}输出:catch(char c)catch(const char* cs)小结C++ 中直接支持异常处理的概念try … catch … 是 C++ 中异常处理的专用语句try 语句处理正常逻辑代码,catch 语句处理异常情况同一个 try 语句可以跟上多个 catch 语句异常处理必须严格匹配,不进行任何的类型转换以上内容参考狄泰软件学院系列课程,请大家保护原创