C++為我們提供了一種結構化形式的,更為優雅的異常處理機制,這種結構化機制可以把程式中正常執行的程式碼和異常處理的部分分開表示,使程式變得更清晰易讀,更為優雅!
下面,來看異常處理的結構,共分兩部分:
try{//正常程序執行語句throw(異常類型表達式);}catch(異常類型1){//異常處理代碼}catch(異常類型2){//異常處理代碼}catch(異常類型3){ //異常處理程式碼}//後續程式碼
以上是C++中異常處理的程式碼形式,用到了try 、 throw 、 catch三個關鍵字。
程式碼在執行時,首先遇到try程式碼區塊,作用就是啟動異常處理機制,偵測try程式碼執行時遇到的異常,然後透過throw進行拋出,throw當中的異常類型表達式是常數或變數表達式。接下來會和後面的catch語句塊進行匹配(捕獲),然後執行對應的程式碼。如果沒有發現可以匹配的類型則,則繼續向下執行。如若未找到匹配,則自動呼叫terminate()結束函數,預設功能是abort()終止程式.
下面舉一個除法運算時,除數為0時候的一個異常處理:
#include<iostream>usingnamespacestd;intmain(){inta,b;cin>>a>>b;try{if(b==0)throwerror!b<0;}catch(constchar*str){cout<<str <<endl;}catch(int){cout<<throwint<<endl;}return0;}
可以看到,在try中,如果發現b為0會拋出一個字串,那麼此時會進入catch匹配,很明顯將匹配第一個catch,進而輸出str的值,請大家自行理解!