簡體   English   中英

是否可以通過不拋出異常的基類的調用方法拋出java異常?

[英]Is it possible to throw a java exception through the calling method of a base class that does not throw exceptions?

這可能是一個關於異常處理的荒謬Java問題,但我有一個UI actor(一個Android Activity),它從我的ContentProvider子類請求服務。 當sd-card已滿,sd-card缺失,網絡i / o錯誤等時,子類想要拋出一些異常。但是,當我編寫CP子類來拋出異常時,編譯器提供添加異常CP班。 顯然,我不想修改基類,但我希望UI能夠捕獲子類的異常。

說得通? 這可能嗎? 如果沒有,我的服務子類是否有更好的模式將其throwable對象返回到UI?

您可以拋出Unchecked exceptions而無需將它們添加到方法的原型中。

未經檢查的異常是從RuntimeException繼承的任何異常。 那是你想做的嗎?

您可以拋出RuntimeException的子類實例,這些實例不會被編譯器檢查。

但是,話雖如此,空異常規范是基類方法的一部分。 子類最好滿足契約,因此子類實例可以在任何使用超類類型的代碼中使用。 (這被稱為利斯科夫替代原則 。)

您只需要聲明並捕獲“已檢查的異常”。 您不需要聲明或明確捕獲RuntimeExceptions。 因此,您可以拋出RuntimeException並在層次結構中隨意捕獲它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM