C C 異常處理 二

2021-08-10 16:36:37 字數 2342 閱讀 3802

c++中內建了異常處理的語法元素

try...catch... --

try語句處理正常**邏輯 --

catch語句處理異常情況 --

try語句中的異常由對應的

catch語句處理

try

catch(...)

c++通過throw語句丟擲異常,throw關鍵字後邊跟的是一種"異常標誌",可以是任何資料型別(包括自定義類)來代表異常。 【

程式設計實驗】c++異常使用

double divide (double e, bouble b)

else

return ret;

}

c++異常處理分析 --

throw丟擲的異常必須被

catch

處理。

--當前函式能夠處理,程式繼續往下執行。

--當前函式不能處理,沿著函式呼叫棧向上傳播,如果整個函式呼叫棧中的函式都不能處理,則程式停止執行。

未被處理的異常會

順著函式呼叫棧向上傳播,直到被處理為止,否則程式將停止執行。

function3丟擲異常1,當function3不能處理這個異常的時候,異常1會繼續沿著函式呼叫棧執行,

直到被處理為止

,如果最後沒有被處理,程式停止執行。

【 程式設計實驗】異常沿函式呼叫棧傳播

#include #include using namespace std;

double divide(double a, double b)

else

return ret;

}int main(int argc, char *argv)

catch(...)//這裡catch(...)表示捕捉任何種類的異常

return 0;

}

c++異常處理要點:

--同乙個try語句可以跟上

多個catch語句(想象一下,

try語句塊中可以丟擲多種型別的異常,而下邊跟了多個

catch語句來捕捉,如果前些catch都沒有捕捉到該異常,最後乙個我們放大招

catch(...),不管什麼,都收了)

--catch語句可以定義具體處理的異常型別

--不同型別的異常由不同的

catch語句負責處理

--try語句塊中可以丟擲任何型別的異常

--catch(...)用於處理所有型別的異常

--任何異常都只能被

捕獲(catch)一次

異常匹配處理規則:

catch(資料型別)用於異常,用法有點像函式引數,與函式引數不一樣的是,編譯器對

catch中的型別

不做任何型別推導,

嚴格匹配,字元就是字元,整型就是整型。 【

程式設計實驗】c++中異常嚴格匹配

#include #include using namespace std;

void demo1()

catch(int c)//這裡捕獲int型別的異常,不會對'c'做任何型別轉換

catch(char c)//這裡捕獲char型別

catch(double c)

catch(...)

}void demo2()

int main(int argc, char *argv)

catch(char* s)

catch(const char* cs)//這裡捕獲const 字元陣列異常

catch(string ss)//這裡捕獲我們剛剛丟擲的那種string型別的異常

system("pause");

return 0;

}

vs2015執行結果:

catch(char c)

catch(string ss)

小結:

--c++中

直接支援異常語法概念

--try...catch...用於c++中的異常處理

--try語句處理正常執行的**邏輯,

catch語句用於處理異常邏輯

--同乙個

try語句可以跟上多個

catch語句

--異常處理必須進行

嚴格的型別匹配,

編譯器不做任何型別推導

C C 異常處理區別

c異常 c structured exception 只能處理一種型別 unsigned int c 異常 c exception 處理很多態別。c異常根據無符號整型的值來標識,而c 異常是根據資料型別來標識的。當在c程式中引發了異常後,每乙個能處理者都去檢查異常內容來決定是自己處理還是交給其他處理...

C C 異常處理階段總結

所謂異常,即指令執行時,原計畫的執行順序必須改變。導致這種改變的原因包括 1,使用者主動丟擲異常 2.指令執行時異常。要進行異常處理,第一步就是捕獲異常。誰來捕獲,可能是 1.程式本身 2.作業系統。如果程式不捕獲,作業系統也不捕獲,系統肯定就崩潰了。程式本身只能捕獲使用者主動丟擲的異常。這種使用者...

C C 複習 C 異常處理

c語言異常處理 try程式塊 該區段包含可能會發生異常的 在發生了異常之後,通過throw丟擲異常 throw程式塊 throw語句用於丟擲異常,在c 中,被丟擲的異常可以是內建型別的物件,也可以是自定義型別的物件 catch程式塊 對異常進行捕捉,處理特定型別的異常。例一 include incl...