久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java異常處理中throw與throws關鍵字的用法及區(qū)別

 2017helloworld 2017-07-29

拋出異常

拋出異常有三種形式,一是throws,,一個throw,,還有一種系統(tǒng)自動拋異常。下面它們之間的異同:

1.throws是方法可能拋出異常的聲明,。(用在聲明方法時,,表示該方法可能要拋出異常)

throws 用于拋出方法層次的異常,并且直接由些方法調(diào)用異常處理類來處理該異常,,所以它常用在方法的后面。

語法:[(修飾符)](返回值類型)(方法名)([參數(shù)列表])[throws(異常類)]{......}

public void function() throws Exception{......}

當某個方法可能會拋出某種異常時用于throws 聲明可能拋出的異常,,然后交給上層調(diào)用它的方法程序處理,。

范例一:

public class TestDemo{

public static void function() throws NumberFormatException{

String s = '沐兮沐楚';

System.out.println(Double.parseDouble(s));

}

public static void main(String[] args) {

try{

function();

}catch(NumberFormatException e){

System.out.println('非數(shù)據(jù)類型不能轉(zhuǎn)換');

e.printStackTrace();//打印出異常,并顯示出更深的調(diào)用信息

}

}

}

執(zhí)行結果:

非數(shù)據(jù)類型不能轉(zhuǎn)換

java.lang.NumberFormatException: For input string: '沐兮沐楚'

at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)

at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)

at java.lang.Double.parseDouble(Double.java:538)

at TestDemo.function(TestDemo.java:4)

at TestDemo.main(TestDemo.java:8)


2.throw是語句拋出一個異常,。

throw 用于方法塊里面的代碼,,比throws的層次要低,比如try...catch ....語句塊,,表示它拋出異常,,但它不會處理它,而是由方法塊的throws Exception來調(diào)用異常處理類來處理,。

語法:throw (異常對象);

throw e;

一般會用于程序出現(xiàn)某種邏輯時程序員主動拋出某種特定類型的異常,。

范例二:

public class TestDemo{

public static void main(String[] args) {

String s = '沐兮沐楚';

if(s.equals('沐兮沐楚')){

throw new NumberFormatException();

}else{

System.out.println(s);

}

}

}

執(zhí)行結果:(會拋出異常)

Exception in thread 'main' java.lang.NumberFormatException

at TestDemo.main(TestDemo.java:5)


3.系統(tǒng)自動拋出的異常

所有系統(tǒng)定義的編譯和運行異常都可以由系統(tǒng)自動拋出,稱為標準異常,,并且 Java 強烈地要求應用程序進行完整的異常處理,,給用戶友好的提示,或者修正后使程序繼續(xù)執(zhí)行,。

當程序語句出現(xiàn)一些邏輯錯誤,、主義錯誤或類型轉(zhuǎn)換錯誤時,系統(tǒng)會自動拋出異常,。

范例三:

public class TestDemo{

public static void main(String[] args) {

int a = 5;

int b = 0;

System.out.println(a/b);

}

}

執(zhí)行結果:(系統(tǒng)會自動拋出ArithmeticException異常)

Exception in thread 'main' java.lang.ArithmeticException: / by zero

at TestDemo.main(TestDemo.java:5)


范例四:

public class TestDemo{

public static void main(String[] args) {

String s = '沐兮沐楚';

System.out.println(Double.parseDouble(s));

}

}

執(zhí)行結果(系統(tǒng)會自動拋出NumberFormatException異常):

Exception in thread 'main' java.lang.NumberFormatException: For input string: '沐兮沐楚'

at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)

at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)

at java.lang.Double.parseDouble(Double.java:538)

at TestDemo.main(TestDemo.java:4)


throw與throws的區(qū)別

1,、throws出現(xiàn)在方法函數(shù)頭;而throw出現(xiàn)在函數(shù)體,。

2,、throws表示出現(xiàn)異常的一種可能性,并不一定會發(fā)生這些異常;throw則是拋出了異常,,執(zhí)行throw則一定拋出了某種異常對象,。

3、兩者都是消極處理異常的方式(這里的消極并不是說這種方式不好),,只是拋出或者可能拋出異常,,但是不會由函數(shù)去處理異常,真正的處理異常由函數(shù)的上層調(diào)用處理,。

好的編程習慣:

1.在寫程序時,,對可能會出現(xiàn)異常的部分通常要用try{...}catch{...}去捕捉它并對它進行處理;

2.用try{...}catch{...}捕捉了異常之后一定要對在catch{...}中對其進行處理,,那怕是最簡單的一句輸出語句,,或棧輸入e.printStackTrace();

3.如果是捕捉IO輸入輸出流中的異常,一定要在try{...}catch{...}后加finally{...}把輸入輸出流關閉,;

4.如果在函數(shù)體內(nèi)用throw拋出了某種異常,,最好要在函數(shù)名中加throws拋異常聲明,然后交給調(diào)用它的上層函數(shù)進行處理,。



    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多