更新時間:2019-09-11 11:01:06 來源:動力節點 瀏覽2634次
今天動力節點Java培訓機構小編為大家分享“Java異常處理中throw和throws的區別詳解”,希望通過此文大家能夠掌握throw和throws的區別,下面就隨小編一起看看Java異常處理中throw和throws的區別詳解。
拋出異常
拋出異常有三種形式,一是throw,一個throws,還有一種系統自動拋異常,下面看一下它們之間的異同。
系統自動拋異常
當程序語句出現一些邏輯錯誤、主義錯誤或類型轉換錯誤時,系統會自動拋出異常。如:
public static void main(String[] args) {
int a = 5, b =0;
System.out.println(5/b);
//function();
}
系統會自動拋出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();
}
系統會自動拋出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是語句拋出一個異常。
語法:throw (異常對象);
如:throw e;
一般會用于程序出現某種邏輯時程序員主動拋出某種特定類型的異常。如:
public static void main(String[] args) {
String s = "abc";
if(s.equals("abc")) {
throw new NumberFormatException();
} else {
System.out.println(s);
}
//function();
}
會拋出異常:
Exception in thread "main" java.lang.NumberFormatException
at test.ExceptionTest.main(ExceptionTest.java:67)
throws
throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{......}
如:public void function() throws Exception{......}
當某個方法可能會拋出某種異常時用于throws 聲明可能拋出的異常,然后交給上層調用它的方法程序處理。如:
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("非數據類型不能轉換。");
//e.printStackTrace();
}
}
處理結果如下:非數據類型不能轉換。
throw與throws的比較
1、throws出現在方法函數頭;而throw出現在函數體。
2、throws表示出現異常的一種可能性,并不一定會發生這些異常;throw則是拋出了異常,執行throw則一定拋出了某種異常對象。
3、兩者都是消極處理異常的方式(這里的消極并不是說這種方式不好),只是拋出或者可能拋出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。
以上就是動力節點Java培訓機構小編介紹的“Java異常處理中throw和throws的區別詳解”的內容,希望對大家有幫助,更多Java最新資訊請繼續關注動力節點Java培訓機構官網,每天會有精彩內容分享與你。
相關免費視頻教程推薦
零基礎java教程下載——throws拋出處理:http://m.dabaquan.cn/xiazai/2553.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習