[英]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.