4 回答
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
就是拋出異常 等待catch,
可能具體細(xì)節(jié)有問題,意思就是這樣的。
可以在里層把異常繼續(xù)拋出,然后在外層catch這個(gè)異常
比如:
void main()
{
try
{
example()
}
catch(exceptioin e)
{
Console.WriteLine(e.message);
}
}
int example()
{
try
{
int i =9/0;
}
catch(exception e)
{
throw;
}
}
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
就是程序出錯(cuò)的時(shí)候,把錯(cuò)誤拋給上一層引用。throw語句就是用來干這個(gè)事的。
比如下面的偽代碼:
func2()
{
throw new Exception("I am a error"); //生成一個(gè)自定義異常拋出
}
main ()
{
try{
func2();
}
catch(Exception ex){
print ex;
}
}
程序會輸出:"I am a error"
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
有三個(gè)關(guān)鍵字, 是關(guān)于異常處理的:
1、 try
2、 catch
3、 throw
其中關(guān)鍵字try表示定義一個(gè)受到監(jiān)控、受到保護(hù)的程序代碼塊;關(guān)鍵字catch與try遙相呼應(yīng),定義當(dāng)try block(受監(jiān)控的程序塊)出現(xiàn)異常時(shí),錯(cuò)誤處理的程序模塊,并且每個(gè)catch block都帶一個(gè)參數(shù)(類似于函數(shù)定義時(shí)的數(shù)那樣),這個(gè)參數(shù)的數(shù)據(jù)類型用于異常對象的數(shù)據(jù)類型進(jìn)行匹配;而throw則是檢測到一個(gè)異常錯(cuò)誤發(fā)生后向外拋出一個(gè)異常事件,通知對應(yīng)的catch程序塊執(zhí)行對應(yīng)的錯(cuò)誤處理。
語法 :
int main()
{
cout << "In main." << endl;
//定義一個(gè)try block,它是用一對花括號{}所括起來的塊作用域的代碼塊
try
{
cout << "在 try block 中, 準(zhǔn)備拋出一個(gè)異常." << endl;
//這里拋出一個(gè)異常(其中異常對象的數(shù)據(jù)類型是int,值為1)
//由于在try block中的代碼是受到監(jiān)控保護(hù)的,所以拋出異常后,程序的
//控制流便轉(zhuǎn)到隨后的catch block中
throw 1;
cout << "在 try block 中, 由于前面拋出了一個(gè)異常,因此這里的代碼是不會得以執(zhí)行到的" << endl;
}
//這里必須相對應(yīng)地,至少定義一個(gè)catch block,同樣它也是用花括號括起來的
catch( int& value )
{
cout << "在 catch block 中, 處理異常錯(cuò)誤。異常對象value的值為:"<< value << endl;
}
cout << "Back in main. Execution resumes here." << endl;
return 0;
}
- 4 回答
- 0 關(guān)注
- 1109 瀏覽
添加回答
舉報(bào)
