1)若有異常 則通過throw 操作 建立乙個異常物件 並丟擲。
2)將可能丟擲異常的程式段嵌在try塊之中。控制通過正常的順序執行到達try語句。然後執行try塊內的保護段
3)如果在保護段執行期間沒有引起異常,那麼跟在try塊後的catch子句就不執行。程式從try塊後跟隨的最後乙個catch子句後面的語句繼續執行下去
4)catch子句按其在try塊後出現的順序被檢查。匹配的catch子句將捕獲並處理異常(或繼續丟擲異常)
5)如果匹配的處理器未找到,則執行函式terminate將被自動呼叫,其預設功能是呼叫abort終止程式
6)處理不了的異常,可以在catch的最後乙個分支,使用throw語法,向上扔
// 異常的基本語法.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include using namespace std;
void divide(int x,int y)
cout << "divide結果:" << x / y << endl;
2.棧解旋
執行throw語句後,相當於 return ,但是不是,會呼叫析構函式 釋放掉棧空間
// 異常_棧解旋.cpp : 定義控制台應用程式的入口點。
3.異常的介面宣告
1)為了加強程式的可讀性,可以在函式宣告中列出可能丟擲的所有異常累成,例如:
void func() throw(a,b,c,d);//這個函式func()能夠且只能丟擲型別a b c d及其子型別的異常
2)如果在函式宣告中沒有包含異常介面宣告,則該函式可以丟擲任何型別的異常,例如:
void func();
3)乙個不丟擲任何型別異常的函式可以宣告為:
void func() throw();
4)如果乙個函式丟擲了它的異常介面宣告所不允許丟擲的異常,unexpercted函式會被呼叫,該函式預設行為呼叫terminate函式終止程式。
4.異常變數的宣告週期
// 異常_棧解旋.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include using namespace std;
class badsrctype
badsrctype(const badsrctype &obj)
~badsrctype()
};class baddestype
baddestype(const baddestype &obj)
~baddestype()
};class badprotype
badprotype(const badprotype &obj)
~badprotype()
};void my_strcpy(char *to,char *from)
if (to == null)
if (*from=='a')
while (*from!='\0')
*to = '\0';
}int main()
; try
//結論1:如果接收異常的時候使用異常變數 則進行拷貝構造異常變數
catch (badsrctype e)
catch (baddestype e)
catch (badprotype e)
catch (...)
//方式二:用引用接收異常
//結論二:使用引用的話 會使用throw時候的那個物件
//catch (badsrctype &e)
//catch (baddestype &e)
//catch (badprotype &e)
//catch (...)
//方式三:用指標來接
//結論三:指標可以和引用/元素 寫在一塊,但是元素和引用不能寫在一塊
//catch (badsrctype *e)
//catch (baddestype *e)
//catch (badprotype *e)
//catch (...)
//結論:最適合的方法是用引用來接
return 0;
}
方式一:
方式二:
方式三:
C 異常基本語法
define crt secure no warnings includeusing namespace std class myexception class person person int mydivide int a int b return a b void test01 catch i...
C 學習筆記1 基本語法
在 c 中,有些識別符號在 的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字 contextual keywords 下表列出了 c 中的保留關鍵字 reserved keywords 和上下文關鍵字 contextual keywords 保留關鍵字 abstract asb...
C 學習筆記(1)基本語法
1.簡介 優點 缺點 2.程式結構 注意點 3.基本語法 4.資料型別 引用型別 不包含儲存再變數中的實際資料,但包含對變數的引用,指的是乙個記憶體位置 動態型別 與物件型別相似,型別檢查在執行時發生 字串型別 system.string 類的別名,從object類派生。使用者引用型別 class ...