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