首先你使用的是判斷代碼快,在代碼快的編寫(xiě)上就錯(cuò)誤了。不論是java和是C#,進(jìn)行異常處理需要使用的外側(cè)代碼只有try{}catch{}finally try塊中的語(yǔ)句就是可能要發(fā)生異常的代碼,catch中的語(yǔ)句就是如果try中的語(yǔ)句發(fā)生了異常那么就執(zhí)行catch中的代碼。finally是一個(gè)可選的,無(wú)論是否發(fā)生異常都要進(jìn)行執(zhí)行的代碼放在finally中。

創(chuàng)新互聯(lián)專(zhuān)注于網(wǎng)站建設(shè)|成都網(wǎng)站維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都圍欄護(hù)欄等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷(xiāo)售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。
直接throws Exception 寫(xiě)在你的方法或者類(lèi)名后
或者用try catch
在 Java 應(yīng)用程序中,異常處理機(jī)制為:拋出異常,捕捉異常。
拋出異常:當(dāng)一個(gè)方法出現(xiàn)錯(cuò)誤引發(fā)異常時(shí),方法創(chuàng)建異常對(duì)象并交付運(yùn)行時(shí)系統(tǒng),異常對(duì)象中包含了異常類(lèi)型和異常出現(xiàn)時(shí)的程序狀態(tài)等異常信息。運(yùn)行時(shí)系統(tǒng)負(fù)責(zé)尋找處置異常的代碼并執(zhí)行。
捕獲異常:在方法拋出異常之后,運(yùn)行時(shí)系統(tǒng)將轉(zhuǎn)為尋找合適的異常處理器(exception handler)。潛在的異常處理器是異常發(fā)生時(shí)依次存留在調(diào)用棧中的方法的集合。當(dāng)異常處理器所能處理的異常類(lèi)型與方法拋出的異常類(lèi)型相符時(shí),即為合適 的異常處理器。運(yùn)行時(shí)系統(tǒng)從發(fā)生異常的方法開(kāi)始,依次回查調(diào)用棧中的方法,直至找到含有合適異常處理器的方法并執(zhí)行。當(dāng)運(yùn)行時(shí)系統(tǒng)遍歷調(diào)用棧而未找到合適 的異常處理器,則運(yùn)行時(shí)系統(tǒng)終止。同時(shí),意味著Java程序的終止。
對(duì)于運(yùn)行時(shí)異常、錯(cuò)誤或可查異常,Java技術(shù)所要求的異常處理方式有所不同。
由于運(yùn)行時(shí)異常的不可查性,為了更合理、更容易地實(shí)現(xiàn)應(yīng)用程序,Java規(guī)定,運(yùn)行時(shí)異常將由Java運(yùn)行時(shí)系統(tǒng)自動(dòng)拋出,允許應(yīng)用程序忽略運(yùn)行時(shí)異常。
對(duì)于方法運(yùn)行中可能出現(xiàn)的Error,當(dāng)運(yùn)行方法不欲捕捉時(shí),Java允許該方法不做任何拋出聲明。因?yàn)椋蠖鄶?shù)Error異常屬于永遠(yuǎn)不能被允許發(fā)生的狀況,也屬于合理的應(yīng)用程序不該捕捉的異常。
一般如果出現(xiàn)非人為異常,即非通過(guò)代碼throw的方式拋出異常,同時(shí)未通過(guò)try-catch捕捉。則當(dāng)前代碼不會(huì)繼續(xù)執(zhí)行,而是向上拋出異常,即返回調(diào)用當(dāng)前代碼的位置。如果該位置未對(duì)異常進(jìn)行處理,則繼續(xù)向上拋出。
通過(guò)try-catch捕捉異常,即異常代碼在try中,可以在catch中進(jìn)行異常處理
try{ ... //代碼,產(chǎn)生異常}catch(Exception e){//e是異常類(lèi)型,一般根父類(lèi)為Exception類(lèi) ... //進(jìn)行產(chǎn)生異常后的處理}finally{ ... //無(wú)論如何都會(huì)執(zhí)行的代碼}...//如果catch中沒(méi)有繼續(xù)throw異常以及沒(méi)有產(chǎn)生新異常,則繼續(xù)執(zhí)行的代碼
如果想要代碼繼續(xù)執(zhí)行,可以在catch中不繼續(xù)拋出異常,則代碼將執(zhí)行catch之后的代碼(如果有finally,則先執(zhí)行finally的代碼)。如果想要在產(chǎn)生異常之后仍需要執(zhí)行一部分代碼,則可以將該部分代碼放在finally中。
return會(huì)執(zhí)行的。
try{}里面包含可能會(huì)出錯(cuò)的代碼?如果里面出錯(cuò)了,他回交給catch{}處理,catch可能把這個(gè)錯(cuò)誤給屏蔽掉(就比如說(shuō)你牙疼不能吃飯,給給力來(lái)個(gè)止疼的,不影響你做其他的事情了)。。不影響你之后的代碼運(yùn)行。。但是如果你try{}里面有多行代碼第一行,第二行,第三行,如果第二行出錯(cuò)了,第三行是不執(zhí)行的。如果有finally{}這里里面代碼是處理后事的。比如說(shuō),你try里面有操作工作流的,那么如果出錯(cuò)了fianlly可以用力處理,關(guān)閉工作流對(duì)象,避免浪費(fèi)資源。finally{}是必須執(zhí)行的,不是管是出錯(cuò)了,還是不出錯(cuò)。
java中拋出異常后面的代碼不會(huì)執(zhí)行,測(cè)試代碼如下:
public?class?Test?{
public?static?void?main(String[]?args)?{
int?i?=?10;
try?{
//?此處會(huì)報(bào)錯(cuò)
int?j?=?i?/?0;
System.out.println("hello");
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
}
執(zhí)行結(jié)果:
class?Math?{
public?static?float?div(float?x,?float?y)?throws?Exception?{
System.out.println("=====計(jì)算開(kāi)始=====");
float?temp?=?0;
try?{
temp?=?x?/?y;
}?catch?(Exception?e)?{
throw?e;
}?finally?{
System.out.println("=====計(jì)算結(jié)束=====");
}
return?temp;
}
}
public?class?danci?{
public?static?void?main(String[]?args)?{
try?{
float?i?=?0;
float?j?=?0;
// String?st1?=?args[0];
// String?st2?=?args[1];
// i?=?Float.parseFloat(st1);
// j?=?Float.parseFloat(st2);
System.out.println(i?+?"?除?"?+?j?+?"?=?"?+?Math.div(i,?j));
}?catch?(Exception?e)?{
System.out.println("異常產(chǎn)生:"?+?e);
}
}
}
因?yàn)槟闶窃谖易⑨尩哪堑胤匠霈F(xiàn)的異常,所以下邊的不會(huì)執(zhí)行而是立即跳到catch,如果注釋下就好了。
本文名稱:java拋出異常外層代碼,java拋出異常代碼例子
標(biāo)題路徑:http://chinadenli.net/article28/dsijccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、關(guān)鍵詞優(yōu)化、服務(wù)器托管、網(wǎng)站維護(hù)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃
聲明:本網(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)