亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問test2() throw 的RuntimeException 為什么不需要test2() throws Exception 聲明拋出異常?

請問test2() throw 的RuntimeException 為什么不需要test2() throws Exception 聲明拋出異常?


public void test1() throws DrunkException{

????throw new DrunkException("喝車別開酒!");

}

public void test2(){

????try {

????????test1();

????} catch (DrunkException e) {

????// TODO Auto-generated catch block

????RuntimeException newExc =?

????????new RuntimeException(e);

????????// newExc.initCause(e);

????????throw newExc;

????}

}


正在回答

3 回答

哦,不好意思,沒看到是RuntimeException,該異常屬于Java中的特例,因為編譯器沒有在這個問題上對異常說明進行強制檢查,RuntimeException類型的異常也許會穿越所有的執行路徑達到main方法中,而不會被捕獲。對于該異常類,編譯器不需要異常說明,其輸出會直接報告給System.err,如果說RuntimeException在到達main方法之前沒有被捕獲,那么在退出當前程序的時候,會直接調用printStackTrace()方法。

你可以把這個異常理解為編程錯誤,所以不用拋出也是可以的

1 回復 有任何疑惑可以回復我~

參看1-1的視頻,我想是因為RuntimeException 屬于unchecked exception,?對于RuntimeException,java編譯器不要求把它捕獲或者拋出

1 回復 有任何疑惑可以回復我~

test2不是有try-catch語句塊嗎?這個語句塊就是捕獲異常使用的,所以當有這個語句塊的時候就不用拋出異常了,你可以把test1和test2對比一下,test1中是直接拋出的異常沒有try-catch的使用

0 回復 有任何疑惑可以回復我~
#1

miccio 提問者

我理解你要的意思,但這并不是我問題的答案。try-catch只是處理了test1()產生的異常,但不處理RuntimeException()的異常。 比如你可以做個測試。 test3() { throw new RuntimeException(); } 這里也是不需要處理異常的,而你如果將test2()中catch部分中的RuntimeException()換做 new DrunkException()的話,eclipse還是會提示讓你處理異常的
2015-01-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問test2() throw 的RuntimeException 為什么不需要test2() throws Exception 聲明拋出異常?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號