第十天之異常型別和異常變數的生命週期

2021-09-29 22:03:07 字數 1969 閱讀 5219

1)throw 的異常是有型別的,可以使,數字、字串、類物件。

2)throw 的異常是有型別的,catch 嚴格按照型別進行匹配。

3)注意 異常物件的記憶體模型 。

#include

using

namespace std;

//1、傳統的出錯處理機制 返回值

intmy_strcpy

(char

*to,

char

*from)

while

(*from !=

'\0'

)*to =

'\0'

;return0;

}//2、throw int 型別的異常

void

my_strcpy2

(char

*to,

char

*from)

while

(*from !=

'\0'

)*to =

'\0';}

//3、throw char * 型別的異常

void

my_strcpy3

(char

*to,

char

*from)

while

(*from !=

'\0'

)*to =

'\0';}

class

badsrctype

;class

baddestype

;class

badprocesstype

badprocesstype

(badprocesstype &obj)

~badprocesstype()

};//4、throw 類物件 型別的異常

void

my_strcpy4

(char

*to,

char

*from)if(

*from ==

'b')if(

*from ==

'c')

while

(*from !=

'\0'

)*to =

'\0';}

void

main()

;try

catch

(int e)

//e可以寫也可以不寫 如果不寫就無法使用傳過來的錯誤數

catch

(char

*e)//e所指向的空間在throw的時候分配了記憶體,而且是在常量區

//-------

catch

(badsrctype e)

catch

(baddestype e)

//結論1:如果接受異常的時候使用乙個類異常變數,則發生拷貝構造

/*catch (badprocesstype e) //throw時產生的匿名物件是通過拷貝建構函式拷貝給e的,呼叫兩次構造和析構函式

*///結論2:使用引用的話,會直接使用throw時的匿名物件,不用呼叫兩次構造和析構函式

catch

(badprocesstype &e)

//元素和引用不能同時寫 (推薦使用)

//結論3:指標和引用可以同時寫,指標和元素也可以同時寫

catch

(badprocesstype *e)

////-------

catch(.

..)/***********************傳統的錯誤處理**************************/

/*ret = my_strcpy(buf2, buf1);

if (ret != 0)

}*/cout <<

"buf2 : "

<< buf2 << endl;

system

("pause");

}

十天學會php之第十天

學習目的 學會用php上傳檔案和發郵件 上傳檔案表單必須加上 enctype multipart form data 和 下面看一下 dest dir uploads 設定上傳目錄 dest dest dir.date ymd f name 我這裡設定檔名為日期加上檔名避免重複 r move upl...

十天學會php之第十天

學習目的 學會用php上傳檔案和發郵件 上傳檔案表單必須加上 enctype multipart form data 和 下面看一下 f http post files file dest dir uploads 設定上傳目錄 dest dest dir.date ymd f name 我這裡設定檔...

十天學會php之第十天

學習目的 學會用php上傳檔案和發郵件 上傳檔案表單必須加上 enctype multipart form data 和 下面看一下 dest dir uploads 設定上傳目錄 dest dest dir.date ymd f name 我這裡設定檔名為日期加上檔名避免重複 r move upl...