更新時(shí)間:2019-09-11 11:01:06 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2715次
今天動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編為大家分享“Java異常處理中throw和throws的區(qū)別詳解”,希望通過此文大家能夠掌握throw和throws的區(qū)別,下面就隨小編一起看看Java異常處理中throw和throws的區(qū)別詳解。
拋出異常
拋出異常有三種形式,一是throw,一個(gè)throws,還有一種系統(tǒng)自動(dòng)拋異常,下面看一下它們之間的異同。
系統(tǒng)自動(dòng)拋異常
當(dāng)程序語句出現(xiàn)一些邏輯錯(cuò)誤、主義錯(cuò)誤或類型轉(zhuǎn)換錯(cuò)誤時(shí),系統(tǒng)會(huì)自動(dòng)拋出異常。如:
public static void main(String[] args) {
int a = 5, b =0;
System.out.println(5/b);
//function();
}
系統(tǒng)會(huì)自動(dòng)拋出ArithmeticException異常:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test.ExceptionTest.main(ExceptionTest.java:62)
再如
public static void main(String[] args) {
String s = "abc";
System.out.println(Double.parseDouble(s));
//function();
}
系統(tǒng)會(huì)自動(dòng)拋出NumberFormatException異常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.parseDouble(Double.java:510)
at test.ExceptionTest.main(ExceptionTest.java:62)
throw
throw是語句拋出一個(gè)異常。
語法:throw (異常對(duì)象);
如:throw e;
一般會(huì)用于程序出現(xiàn)某種邏輯時(shí)程序員主動(dòng)拋出某種特定類型的異常。如:
public static void main(String[] args) {
String s = "abc";
if(s.equals("abc")) {
throw new NumberFormatException();
} else {
System.out.println(s);
}
//function();
}
會(huì)拋出異常:
Exception in thread "main" java.lang.NumberFormatException
at test.ExceptionTest.main(ExceptionTest.java:67)
throws
throws是方法可能拋出異常的聲明。(用在聲明方法時(shí),表示該方法可能要拋出異常)
語法:[(修飾符)](返回值類型)(方法名)([參數(shù)列表])[throws(異常類)]{......}
如:public void function() throws Exception{......}
當(dāng)某個(gè)方法可能會(huì)拋出某種異常時(shí)用于throws 聲明可能拋出的異常,然后交給上層調(diào)用它的方法程序處理。如:
public static void function() throws NumberFormatException{
String s = "abc";
System.out.println(Double.parseDouble(s));
}
public static void main(String[] args) {
try {
function();
} catch (NumberFormatException e) {
System.err.println("非數(shù)據(jù)類型不能轉(zhuǎn)換。");
//e.printStackTrace();
}
}
處理結(jié)果如下:非數(shù)據(jù)類型不能轉(zhuǎn)換。
throw與throws的比較
1、throws出現(xiàn)在方法函數(shù)頭;而throw出現(xiàn)在函數(shù)體。
2、throws表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常;throw則是拋出了異常,執(zhí)行throw則一定拋出了某種異常對(duì)象。
3、兩者都是消極處理異常的方式(這里的消極并不是說這種方式不好),只是拋出或者可能拋出異常,但是不會(huì)由函數(shù)去處理異常,真正的處理異常由函數(shù)的上層調(diào)用處理。
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java異常處理中throw和throws的區(qū)別詳解”的內(nèi)容,希望對(duì)大家有幫助,更多Java最新資訊請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
零基礎(chǔ)java教程下載——throws拋出處理:http://www.dabaquan.cn/xiazai/2553.html
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743