std::cout << "~MyExcepction is called" << std::endl;
}
// 獲取錯(cuò)誤碼
int getErrorId()
{
return m_errorId;
}
private:
// 錯(cuò)誤碼
int m_errorId;
};
int main(int argc, char* argv[])
{
// 內(nèi)存泄露檢測(cè)機(jī)制
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
// 可以改變錯(cuò)誤碼,以便拋出不同的異常進(jìn)行測(cè)試
int throwErrorCode = 110;
std::cout << " input test code :" << std::endl;
std::cin >> throwErrorCode;
try
{
if ( throwErrorCode == 110)
{
MyExcepction myStru(110);
// 拋出對(duì)象的地址 -> 由catch( MyExcepction* pMyExcepction) 捕獲
// 這里該對(duì)象的地址拋出給catch語(yǔ)句,不會(huì)調(diào)用對(duì)象的拷貝構(gòu)造函數(shù)
// 傳地址是提倡的做法,不會(huì)頻繁地調(diào)用該對(duì)象的構(gòu)造函數(shù)或拷貝構(gòu)造函數(shù)
// catch語(yǔ)句執(zhí)行結(jié)束后,myStru會(huì)被析構(gòu)掉
throw &myStru;
}
else if ( throwErrorCode == 119 )
{
MyExcepction myStru(119);
// 拋出對(duì)象,這里會(huì)通過(guò)拷貝構(gòu)造函數(shù)創(chuàng)建一個(gè)臨時(shí)的對(duì)象傳出給catch
// 由catch( MyExcepction myExcepction) 捕獲
// 在catch語(yǔ)句中會(huì)再次調(diào)用通過(guò)拷貝構(gòu)造函數(shù)創(chuàng)建臨時(shí)對(duì)象復(fù)制這里傳過(guò)去的對(duì)象
// throw結(jié)束后myStru會(huì)被析構(gòu)掉
throw myStru;
}
else if ( throwErrorCode == 120 )
相關(guān)推薦:2011年上半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間匯總
2011計(jì)算機(jī)等級(jí)考試二級(jí)VB考點(diǎn)及習(xí)題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |