異常的限制

2021-08-30 23:22:57 字數 1522 閱讀 8288

讀書筆記:

class a1 extends exception {}

class a2 extends a1 {}

class a3 extends a1 {}

abstract class inning

public void event() throws a2

public abstract void abat() throws a1, a2;

public void walk()

}class b1 extends exception {}

class b2 extends b1 {}

class b3 extends a2 {}

inte***ce storm

public class nevercaught extends inning implements storm

public nevercaught(string s) throws a2, a1

public void rainhard() throws b2

public void event()

public void walk()

public void abat() throws b3

public static void main(string args) catch (b3 b3) catch (b2 b2) catch (a1 a1)

try catch (a3 a3) catch (a2 a2) catch (b2 b2) catch (a1 a1) }}

1.inning類中,構造器和event方法都生命丟擲異常,實際上卻沒丟擲,抽象方法abat()也可以不用丟擲。基類中丟擲異常的方法,子類可不宣告,

2.如果介面的方法不是來自於基類,介面裡的rainhard方法可丟擲任何異常

3.nevercaught的event因為繼承基類和實現介面基類都有此方法,並且基類方法都有異常宣告,否則使用基類的時候就不能改變inning中方法的宣告

4.異常限制對構造器不起作用

5.過載後的event方法顯示:派生類方法可以不丟擲任何異常即時是基類定義的異常,因為即使基類方法會丟擲異常,這樣做不會破壞已有程式,

public void abat() throws b3

它丟擲b3,b3繼承基類的的abet()的話,你就肯定捕獲b3,如果你寫的**同inning打交道的話,並且呼叫了他的abet方法,因為b3繼承了a2,所以異常也能處理a2。

6.main方法,如果你處理的是nevercaught物件的話,編譯器只會強制你捕獲這個類丟擲的異常,如果轉換成基類的話,就會強制你捕獲基類的異常。

儘管繼承過程中,編譯器對異常說明做強制要求,但異常說明並不是方法原型的一部分,方法原型是由方法的名字與引數的型別組成,因此你不能根據異常說明的不同來過載方法,

乙個基類方法的異常說明不一定出現在子類方法的異常說明裡面,

這一點與繼承的規程明顯不同,基類的方法必須出現在子類裡面,繼承和過載過程中,方法的異常說明的介面不是變大了而是變小了。。這恰好和類介面在繼承時候的情形相反。

Java程式設計思想12 9 異常的限制

1.概念。當覆蓋方法的時候,只能丟擲在基類方法的異常說明裡列出的那些異常。不可以不在基類的異常說明列表中。2.異常限制對構造器不起作用。派生類的構造器的異常說明必須不少於基類構造器的異常說明。且派生類構造器不能捕獲基類構造器丟擲的異常。3.不丟擲性。派生類方法可以不丟擲任何異常,即使它是基類所定義的...

java方法重寫時的異常限制

1.子類在重寫父類的具有異常宣告的方法時,要麼不拋異常,要麼就丟擲跟父類方法相同的異常或該異常的子類。2.子類在重寫父類的具有異常宣告的方法的同時,又去實現了具有相同方法名稱的介面且該介面中的方法也具有異常宣告,則子類中的重寫的方法,要麼不丟擲異常,要麼丟擲父類中方法宣告異常與介面中方法宣告的異常的...

No 9 1異常匹配與限制

size medium 異常匹配 1 丟擲異常的時候,異常處理系統會按照你書寫 的順序找出 最近 的處理程式。2 找到匹配的處理程式之後,它就認為異常將得到處理,然後就不再繼續查詢。3 如果你把捕獲基類的catch子句放在最前面,就會把派生類的異常全給 遮蔽 掉,產生編譯錯誤。異常的限制 a 當你過...