異常產(chǎn)生和提交的過(guò)程
得到異常對(duì)象后,尋找處理這一異常的方法,運(yùn)行時(shí)把當(dāng)前異常交給該方法進(jìn)行處理
3.異常處理的一般步驟①異常拋出?②異常捕獲→③異常處理
放可能引發(fā)異常的代碼,試試它所包含的代碼段中是否會(huì)發(fā)生異常
2.catch對(duì)應(yīng)的異常類型和一個(gè)代碼塊,表明該catch塊用于處理這種類型的代碼塊,可以有多個(gè)catch。當(dāng)有異常時(shí),抓住并進(jìn)行相應(yīng)的處理,使程序不受異常的影響而繼續(xù)執(zhí)行下去
3.throw拋出一個(gè)實(shí)際的異常,拋出一個(gè)具體的異常對(duì)象,在程序中明確引發(fā)異常
4.throws如果一個(gè)方法可以引發(fā)異常,它本身并不處理該異常,那么它必須將該異常拋給調(diào)用它的方法。用于聲明該方法可能拋出的異常。
5.finally無(wú)論是否發(fā)生異常都要執(zhí)行的代碼
catch2.try-catch-catch每個(gè)try代碼塊可以伴隨一條或多條catch語(yǔ)句,用于處理try代碼塊中生成的異常事件。
需要一個(gè)形式參數(shù)指明它能夠捕獲地異常類型,必須是Throwable的子類。
不會(huì)產(chǎn)生異常情況,執(zhí)行try{}public void method(){
? try{
? // 代碼段 不會(huì)產(chǎn)生異常 √
}catch(異常類型 ex){
? // 處理異常的代碼段
}
}
會(huì)產(chǎn)生異常情況,try{}有異常,與catch(匹配異常類型),執(zhí)行catch{}public void method(){
? try{
? // 代碼段1
? //? 產(chǎn)生異常的代碼段2 與catch類型匹配后進(jìn)入catch{}
? // 代碼段3
}catch(異常類型 ex){????????// 如果類型不匹配則程序中斷
? // 處理異常的代碼段4 √
}
? // 代碼段5
}
3.try-finally一段代碼可能引發(fā)多種類型的異常。引發(fā)異常時(shí),按順序查看每條catch語(yǔ)句,執(zhí)行第一條類型匹配的catch{},后面的catch{}將被忽略。
安排catch語(yǔ)句的順序時(shí),先安排子類,再安排父類。
public void method(){
? try{
? // 代碼段
}catch(異常類型1 ex){
? // 處理異常的代碼段
}catch(異常類型1 ex){
? // 處理異常的代碼段
}catch(異常類型1 ex){
? // 處理異常的代碼段
}
? // 代碼段
}
4.try-catch...catch-finally沒(méi)有catch子塊,發(fā)生異常時(shí)無(wú)法在當(dāng)前程序中捕獲,由系統(tǒng)處理。
public int method(){
? try{
? return 1;
}
finally{
? // 放在任何情況下都必須執(zhí)行的代碼
? return 0;
}
}
當(dāng)程序使用了外界資源,必須將釋放資源的代碼寫入finally塊
throw語(yǔ)句try{
? // 無(wú)異常時(shí)跳過(guò)catch{},執(zhí)行完執(zhí)行finally{}
? // 有異常時(shí)與catch{}匹配,跳過(guò)try{}直接執(zhí)行匹配的catch{}
}
catch(異常類型1 ex){
? // 類型匹配時(shí) 處理異常
? // 類型不匹配時(shí) 進(jìn)行下一條catch塊匹配
}
catch(異常處理2 ex){
? //類型匹配時(shí) 處理異常
? //類型依然不匹配時(shí) 無(wú)finally則中斷程序 有finally時(shí)執(zhí)行finally{}
}
finally{
? // 有無(wú)異常都要執(zhí)行
? // catch都不匹配時(shí)也要執(zhí)行
}
throws子句用來(lái)明確地拋出一個(gè)異常。
if(異常條件1成立)
? throw new 異常1();
if(異常條件2成立)
? throw new 異常2();
...
// 拋出異常首先要生成異常對(duì)象
// 生成異常對(duì)象通過(guò)throw語(yǔ)句實(shí)現(xiàn):
IOException e=new IOException();
throw e;
三種嵌套用來(lái)聲明一個(gè)異常。
returnType methodName([paramlist]) throws exceptionList{...}
返回類型 方法名(參數(shù)列表) throws 異常列表{...}
try
{
? try{ }
? catch(Exception E1){ }
}
catch(Exception E2){ }
try{ }
catch(Exception E1)
{
? try{ }
? catch(Exception E2){ }
}
try{ }
catch(Exception E2){ }
finally
{?
? try{ }
? catch(Exception E1){ }
? finally{ }?
}?
要用try-catch-finally捕獲,但必須由用戶自己拋出(throw new MyException)。自定義異常類必須使Throw的直接子類或間接子類。(最好定義為Exception的子類。)
class 自定義異常1 extends Exception{
? 自定義異常1(String str)
? super(str);
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:Java的異常處理-創(chuàng)新互聯(lián)
瀏覽地址:http://chinadenli.net/article28/peijp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、品牌網(wǎng)站建設(shè)、服務(wù)器托管、定制開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容