6.1基礎
try-throw-catch
的基本用法如下**段,也即
thorw
什麼型別的異常,就捕捉到什麼型別的異常,並進行什麼型別的處理。注意,
catch
是要按順序排列的,某一型別異常派生自另一型別異常,則另一型別異常一定要放在前者後面,否則異常不會被前者處理。
int i = 0;
cin >> i ;
trybreak;
case 2:
break;
case 3:
break;
default:
break; }
}catch(int)
catch(double)
catch(char)
當catch(…)
表示處理任何錯誤。
6.2catch
塊的觸發
try
catch(h)
當以下情況會觸發catch塊:1)e
與h是相同型別。2)h
是e公共基類,也即e是直接public繼承或是間接public繼承h。
直接public繼承:
class base;
class a:public base;
則a直接public繼承base。
間接public繼承:
class base;
class a:public base;
class aa:public a;
則aa間接public繼承。3)h
、e是指標型別,且1)、2)對它們所引用的型別成立。4)h
、e是引用型別,且1)、2)對它們所引用的型別成立。(《c++ programming language》中原意是「h是引用型別,且1)、2)對它們所引用的型別成立」,經測試,發覺此話有誤。
6.3重新丟擲異常
在catch塊中throw乙個不帶引數的異常出來,重新丟擲的就是原來捕捉的那個異常。
6.4資源管理的異常
一些操作,諸如檔案操作,在檔案open後close前如有異常也可捕捉進行處理。
6.5建構函式裡的異常與初始化器的異常
**可以分別如下:
classa::classa()
catch(s)
}classa::classa()
try
}catch(s)
參考:《c++ programming language》特別版。
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...