VR開發(fā)入門教程34:控制臺編程--異常中的Try-Catch
來源:
奇酷教育 發(fā)表于:
捕捉異常捕獲并處理異常try { 接受監(jiān)視的程序塊,在此區(qū)域內(nèi)發(fā)生 的異常,由catch中指定的程序處理;} 不能有其它語句分隔catch(要處理
捕捉異常
捕獲并處理異常
try {
//接受監(jiān)視的程序塊,在此區(qū)域內(nèi)發(fā)生
//的異常,由catch中指定的程序處理;
}
// 不能有其它語句分隔
catch(要處理的異常種類和標(biāo)識符) {
//處理異常;
}catch(要處理的異常種類和標(biāo)識符) {
//處理異常;
}
Tty-Catch語句
try語句
捕獲例外的第一步就是用try {…}語句指定了一段代碼,該段代碼就是一次捕獲并處理例外的范圍。在執(zhí)行過程中,該段代碼可能會產(chǎn)生并拋棄一個或多個例外,因此,它后面的catch語句進(jìn)行捕獲時也要做相應(yīng)的處理。
如果沒有例外產(chǎn)生,所有的catch代碼段都被略過不執(zhí)行。
catch語句
每個try語句必須伴隨一個或多個catch語句,用于捕獲try代碼塊所產(chǎn)生的例外并做相應(yīng)的處理。 catch語句有一個形式參數(shù),用于指明其所能捕獲得例外類型,運行時系統(tǒng)通過參數(shù)值把被拋棄的例外對象傳遞給catch語句。
程序設(shè)計中要根據(jù)具體的情況來選擇catch語句的例外處理類型,一般應(yīng)該按照try代碼塊中例外可能產(chǎn)生的順序及其真正類型進(jìn)行捕獲和處理,盡量避免選擇最一般的類型作為catch語句中指定要捕獲的類型。
當(dāng)然也可以用一個catch語句處理多個例外類型,這時它的例外類型應(yīng)該是這多個例外類型的父類,但這種方式使得在程序中不能確切判斷例外的具體類型。
注意事項:
1.例外總是由距離產(chǎn)生例外最近的匹配catch代碼段處理
2.如果沒有相應(yīng)的例外處理
則例外被交給上一層try代碼段進(jìn)行處理
3.例外處理的查找依據(jù)類型匹配原則順序進(jìn)行
第一個匹配的例外處理被執(zhí)行,當(dāng)例外處理執(zhí)行完畢,程序接著最后一個catch代碼段后的語句執(zhí)行
4.例外處理的順序影響到例外的處理
子類例外可被父類例外處理捕獲
不要先捕獲父類例外,再捕獲子類例外
5.如果找不到相應(yīng)的例外處理
程序?qū)⒔Y(jié)束程序執(zhí)行;
6.盡量避免用一般類型作為catch中指定要捕獲的類型。一般應(yīng)該按照try代碼塊中例外可能產(chǎn)生的順序及其真正類型進(jìn)行捕獲和處理。
7.在例外處理中無法訪問try代碼段中聲明的變量。因為此時try代碼段已經(jīng)退出了,例外處理所需要的任何信息一般都應(yīng)該通過例外對象來傳遞
8.在使用方法時盡量直接處理該方法可能產(chǎn)生的例外,這樣你的程序就會更健壯
9.在catch代碼段中產(chǎn)生的例外不是由相同try的后續(xù)catch代碼段處理,而是由包含整個try-catch結(jié)構(gòu)的上層try代碼段檢測并處理
10.可以把catch到的例外對象再次拋出,使上層try-catch結(jié)構(gòu)繼續(xù)處理該例外事件;也可以把例外對象轉(zhuǎn)換為其它例外對象…
catch (Exception e) { throw e; }
11.try-catch機制不該被用于流程控制,例外情形應(yīng)該是很稀少的,而不是經(jīng)常性的
12.在catch代碼段中的return語句用于退出方法,而不是返回到例外拋出點(throw point)