日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

throws和throw抛出异常的使用规则

發(fā)布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 throws和throw抛出异常的使用规则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一直對java中的throws和throw不太理解。最近一直在查這兩個方面的資料,算是能明白一點吧。如果我下面的觀點哪有不對,希望指出來,我加以改進。

? ?? ? ?throw:(針對對象的做法) ? ?拋出一個異常,可以是系統(tǒng)定義的,也可以是自己定義的。下面舉兩個例子: ? ? 拋出Java中的一個系統(tǒng)異常: public class One { public void yichang(){ NumberFormatException e = new NumberFormatException(); throw e; } public static void main(String[] args){ One test = new One(); try{ test.yichang(); }catch(NumberFormatException e){ System.out.println(e.getMessage()); } } }

?

拋出一個自定義的異常: public class People {public static int check(String strage) throws MyException{int age = Integer.parseInt(strage);if(age < 0){throw new MyException("年齡不能為負數(shù)!");}return age;}public static void main(String[] args){try{int myage = check("-101");System.out.println(myage);}catch(NumberFormatException e){System.out.println("數(shù)據(jù)格式錯誤");System.out.println("原因:" + e.getMessage());}catch(MyException e){System.out.println("數(shù)據(jù)邏輯錯誤");System.out.println("原因:" + e.getMessage());}} } public class MyException extends Exception{private static final long serialVersionUID = 1L;private String name;public MyException(String name){this.name = name;}public String getMessage(){return this.name;} }

?

?? throws:(針對一個方法拋出的異常) 拋出一個異常,可以是系統(tǒng)定義的,也可以是自己定義的。 拋出java中的一個系統(tǒng)異常: public class One { public void yichang() throws NumberFormatException{ int a = Integer.parseInt("10L"); } public static void main(String[] args){ One test = new One(); try{ test.yichang(); }catch(NumberFormatException e){ System.out.println(e.getMessage()); } } }

?

拋出一個自定義異常: public class People { public static int check(String strage) throws MyException{ int age = Integer.parseInt(strage); if(age < 0){ throw new MyException("年齡不能為負數(shù)!"); } return age; } public static void main(String[] args){ try{ int myage = check("-101"); System.out.println(myage); }catch(NumberFormatException e){ System.out.println("數(shù)據(jù)格式錯誤"); System.out.println("原因:" + e.getMessage()); }catch(MyException e){ System.out.println("數(shù)據(jù)邏輯錯誤"); System.out.println("原因:" + e.getMessage()); } } }public class MyException extends Exception{ private static final long serialVersionUID = 1L; private String name; public MyException(String name){ this.name = name; } public String getMessage(){ return this.name; } }

?

那么下面我要說究竟什么時候用哪種: ? ?如果是系統(tǒng)異常的話可以什么都不用做,也可以針對方法拋出一個異常,因為系統(tǒng)異常是可以被系統(tǒng)自動捕獲的,所以這個異常究竟是要在方法內(nèi)部解決還是交給上層函數(shù)去解決其實效果是一樣的。但是我查了很多資料,即使會拋出異常能被系統(tǒng)所捕獲的話還是建議針對方法寫一個throws,因為這樣在完成一個大型任務(wù)的時候可以讓別的程序員知道這里會出現(xiàn)什么異常。 ? 如果是自己定義的異常,則必須要用throws拋出該方法可能拋出的異常,否則編譯會報錯。

轉(zhuǎn)載于:https://www.cnblogs.com/13224ACMer/p/4926106.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的throws和throw抛出异常的使用规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。