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