和其它很多程序員一樣,本書的主人公阿愚也是在初學(xué)C++時(shí),在C++的sample代碼中與異常處理的編程方法初次邂逅的,如下:
// Normal program statements
...
try
{
// Execute some code that might throw an exception.
}
catch( CException* e )
{
// Handle the exception here.
// "e" contains information about the exception.
e->Delete();
}
// Other normal program statements
瞧瞧,代碼看上去顯得那么整齊、干凈,try block和catch block遙相呼應(yīng),多有對稱美呀!因此主人公初次見面后就一見鐘情了。
為什么要選用異常處理的編程方法?
當(dāng)然更為重要的是,C++中引入的異常處理的編程機(jī)制提供給程序員一種全新的、更好的編程方法和思想。在C++中明確提出trycatch異常處理編程方法的框架之前的年代,程序員是怎樣編寫程序的,如下:
void main(int argc, char* argv[])
{
if (Call_Func1(in, param out)
{
// 函數(shù)調(diào)用成功,我們正常的處理
if (Call_Func2(in, param out)
{
// 函數(shù)調(diào)用成功,我們正常的處理
while(condition)
{
//do other job
if (has error)
{
// 函數(shù)調(diào)用失敗,表明程序執(zhí)行過程中出現(xiàn)一些錯(cuò)誤,
// 因此必須處理錯(cuò)誤
process_error();
exit();
}
//do other job
}
}
else
{
// 函數(shù)調(diào)用失敗,表明程序執(zhí)行過程中出現(xiàn)一些錯(cuò)誤,
// 因此必須處理錯(cuò)誤
process_error();
exit();
}
}
else
{
// 函數(shù)調(diào)用失敗,同樣是錯(cuò)誤處理
process_error();
exit();
}
}
// Normal program statements
...
try
{
// Execute some code that might throw an exception.
}
catch( CException* e )
{
// Handle the exception here.
// "e" contains information about the exception.
e->Delete();
}
// Other normal program statements
瞧瞧,代碼看上去顯得那么整齊、干凈,try block和catch block遙相呼應(yīng),多有對稱美呀!因此主人公初次見面后就一見鐘情了。
為什么要選用異常處理的編程方法?
當(dāng)然更為重要的是,C++中引入的異常處理的編程機(jī)制提供給程序員一種全新的、更好的編程方法和思想。在C++中明確提出trycatch異常處理編程方法的框架之前的年代,程序員是怎樣編寫程序的,如下:
void main(int argc, char* argv[])
{
if (Call_Func1(in, param out)
{
// 函數(shù)調(diào)用成功,我們正常的處理
if (Call_Func2(in, param out)
{
// 函數(shù)調(diào)用成功,我們正常的處理
while(condition)
{
//do other job
if (has error)
{
// 函數(shù)調(diào)用失敗,表明程序執(zhí)行過程中出現(xiàn)一些錯(cuò)誤,
// 因此必須處理錯(cuò)誤
process_error();
exit();
}
//do other job
}
}
else
{
// 函數(shù)調(diào)用失敗,表明程序執(zhí)行過程中出現(xiàn)一些錯(cuò)誤,
// 因此必須處理錯(cuò)誤
process_error();
exit();
}
}
else
{
// 函數(shù)調(diào)用失敗,同樣是錯(cuò)誤處理
process_error();
exit();
}
}