throws与throw有什么关系?区别是什么?
生活随笔
收集整理的這篇文章主要介紹了
throws与throw有什么关系?区别是什么?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本質(zhì)上并沒有什么關(guān)系,只是throw拋出一個(gè)異常對(duì)象,throws就得處理而已。
簡(jiǎn)單理解其實(shí)就是使用throw拋出一個(gè)異常類的對(duì)象等待處理,然后throws就是處理方式,只不過它的方式是把這個(gè)異常丟出去給別人處理。
eg:
//創(chuàng)建一個(gè)ecm(),來計(jì)算i / j;可能會(huì)有輸入數(shù)據(jù)不符合除法運(yùn)算的可能性,所以就需要throw一個(gè)異常對(duì)象,然后ecm()就需要采用throws方式處理這個(gè)異常 //此處的EcDef是自定義的異常類,throw了一個(gè)EcDef異常對(duì)象public static int ecm(int i,int j) throws EcDef{//非運(yùn)行時(shí)異常if(i < 0 || j < 0){throw new EcDef("分子/分母為負(fù)數(shù)了");}return i / j;} //main()中對(duì)拋出的異常做處理public static void main(String[] args) {try {int i = Integer.parseInt(args[0]);//String類型轉(zhuǎn)換為intint j = Integer.parseInt(args[1]);int result = ecm(i, j);System.out.println(result);}catch(NumberFormatException e){System.out.println("數(shù)據(jù)類型不一致");}catch(ArrayIndexOutOfBoundsException e){System.out.println("缺少命令行參數(shù)");}catch(ArithmeticException e){System.out.println("除0");}catch(EcDef e){System.out.println(e.getMessage());} //自定義異常類EcDef繼承Exception /*如何自定義異常類?* 1.繼承現(xiàn)有的異常結(jié)構(gòu):RuntimeException、Exception* 2.提供全局常量:SerialVersionUID* 3.提供重載的構(gòu)造器*/ public class EcDef extends Exception{//繼承Exception類static final long serialVersionUID = -7984116164661L;//設(shè)置一個(gè)全局變量SerialVersionUIDpublic EcDef(){}public EcDef(String msg){//提供重載的構(gòu)造器super(msg);} } 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的throws与throw有什么关系?区别是什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013-2014集训第二次个人积分赛
- 下一篇: 函数装饰器