异常,让一个函数在遇到自己无法处理的问题时可以即时抛出,希望他到调用着直接或者间接的处理该异常。
错误的处理依然是一件很困难的事情,C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。
c++异常处理try catch特点:
1. try catch可以嵌套使用
2. 可以使用throw语句抛出异常
3. 多个catch, 只有第一个匹配到的catch执行
4. "..."作为兜底可以匹配所有异常, 应该放在最后catch, 方便其他catch分支匹配
1 #include <iostream> 2 #include <exception> 3 4 using std::cout; 5 using std::endl; 6 7 class Test{ 8 public: 9 Test(const std::string msg):_msg(msg) { } 10 std::string msg() { return _msg; } 11 private: 12 std::string _msg; 13 }; 14 15 int main(){ 16 try{ 17 try{ 18 try{ 19 //throw 4; 20 //throw "throw err msg"; 21 throw 1.2; 22 //throw Test("test err"); 23 } 24 catch(int a){ //捕获int类型异常 25 cout << "catch " << a << endl; 26 } 27 catch(const char* msg){ //捕获char*类型 28 cout << "throw the old err" << endl; 29 throw ; //将异常原样抛出 30 } 31 catch(Test &t){ //捕获Test类型异常 32 cout << "throw " << t.msg() << endl; 33 } 34 } 35 catch(const char *msg){ 36 cout << "cat " << msg << endl; 37 } 38 } 39 catch(...){ //"..."作为兜底可以捕获所有到异常, 一般放在最后一个catch 40 cout << "other err" << endl; 41 } 42 43 return 0; 44 }
c++ 标准异常:
http://www.cplusplus.com/reference/exception/exception/