C++之异常处理
C++異常處理方式:
C++異常處理使用了三個關(guān)鍵字:try,throw,catch。try-catch塊的形式如下:
try { //包含可能拋出的異常的語句; } catch(類型名[形參名])//捕獲特定類型的異常 { //處理異常的語句; }
try ? ?塊:將有可能出現(xiàn)異常的語句包含在try塊中
catch塊:捕獲并處理,捕獲和處理的條件是拋出的異常類型與catch塊參數(shù)類型相匹配
注意:并不是使用了try塊包含可能出現(xiàn)異常的代碼后,程序就不會崩潰,通常還需要進(jìn)行兩個操作:
(a)滿足某個條件就顯示的拋出(throw)一個異常
(b)使用catch塊來匹配拋出的異常類型
//在函數(shù)進(jìn)行封裝時,一般使用try catch,而一般情況下很少使用,通過if判斷語句進(jìn)行異常處理
#include "stdafx.h" #include<stdlib.h> #include<iostream>using namespace std;void f() {int a(5);int b(0);//1.顯示的拋出異常if (b == 0)throw "除數(shù)為0!";//拋出字符串//拋出異常后,下面的語句不再執(zhí)行//拋出的類型是可選的,比如拋出數(shù)字 404,那么將catch()改成catch(int code),比如網(wǎng)頁中顯示錯誤碼int c = a / b;cout << c << endl; } int main() {//f();//直接調(diào)用程序崩潰try//try塊中放置有可能出現(xiàn)異常的代碼塊{ f();}catch(const char *error)//參數(shù)要和拋出的異常類型匹配,throw中拋出的是字符串{ cout << error << endl;}//catch (...)//使用...可以捕獲throw拋出的任何類型的異常,有點像switch中的default通用性最強(qiáng),匹配性最差//{// cout << "所有異常均可以被捕獲!"<< endl;//}system("pause");return 0; }//catch (...)//使用...可以捕獲throw拋出的任何類型的異常,有點像switch中的default 通用性最強(qiáng),匹配性最差,因此通常將catch(...)放置在多個catch()捕獲的最后, //作為保底的捕獲方法,防止前面沒有可以匹配的異常處理
總結(jié)
- 上一篇: C++之多重继承引发的重复调用
- 下一篇: s3c2440移植MQTT