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...