關(guān)于throws聲明的問題
當(dāng)我的catch這樣寫時(shí)
catch(DrunkException e){
? ? RuntimeException ?newExc = new RuntimeException("dsadsfa");
newExc.initCause(e);
? ? throw newExc;
? ? }
不需要聲明
但如果我把newExc 改成 Throwable 類時(shí)就需要了
catch(DrunkException e){
? ? Throwable newExc = new RuntimeException("dsadsfa");
newExc.initCause(e);
? ? throw newExc;
? ? }
這樣寫會(huì)報(bào)錯(cuò),讓你聲明一個(gè)Throwable。
雖然知道結(jié)果,但是原因還是不懂,所以想請(qǐng)教一下大家。
2015-10-08
Throwable 類是 Java 語言中所有錯(cuò)誤或異常的超類。只有當(dāng)對(duì)象是此類(或其子類之一)的實(shí)例時(shí),才能通過 Java 虛擬機(jī)或者 Java throw 語句拋出。類似地,只有此類或其子類之一才可以是 catch 子句中的參數(shù)類型。
兩個(gè)子類的實(shí)例,Error 和 Exception,通常用于指示發(fā)生了異常情況。通常,這些實(shí)例是在異常情況的上下文中新近創(chuàng)建的,因此包含了相關(guān)的信息(比如堆棧跟蹤數(shù)據(jù))。?
Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應(yīng)用程序想要捕獲的條件