簡體   English   中英

Java異常處理-自定義異常

[英]Java exception handling - Custom exception

我有一個這樣的自定義異常

public class MyOwnException extends Exception {

}

那我上課

我有兩種方法

public void ExceptionTest() throws Exception {
  throw new FileNotFoundException();
}


public void ApplicationExceptionTest() throws MyOwnException {
  throw new FileNotFoundException();
}

Eclipse抱怨第二種方法“未處理的異常類型FileNotFoundException”。 我認為自MyOwnException擴展Exception以來,它不應該抱怨...

誰能告訴我我在這里想念的嗎?

擴展樹

  • 例外
    • IOException
      • FileNotFoundException
    • MyOwnException

FileNotFound和MyOwn彼此不認識。

public void ApplicationExceptionTest() throws Exception 
{ 
throw new FileNotFoundException(); 
}

是要走的路

評論:

我希望這僅用於模型測試,而不是用於實現您不想在常規源代碼中使用的類!

您的方法聲明它拋出MyOwnException ,但FileNotFoundException 不是 MyOwnException 僅僅因為它們都是Exception子類,並不意味着它們彼此相關。

僅當throws子句中明確列出該異常類或超類時,才可以拋出已檢查的異常。 MyOwnException不是FileNotFoundException的超類。

為什么要這樣做?

您是在說ApplicationExceptionTest拋出MyOwnException。 盡管MyOwnException擴展了Exception,但此處無關緊要,因為FileNotFoundException不擴展MyOwnException。

如果更方便,請嘗試將Exception替換為“ Shape”,將FileNotFoundException替換為“ Square”,將MyOwnException替換為“ Circle”。 因此,您說的是扔一個圓圈,但實際上是在扔一個正方形。 兩者都是Shapes都沒關系。

(順便說一句,您的命名約定對於Java非常不典型。在Java中,方法通常以小寫字母開頭。)

Java中的檢查異常通常不是一個好主意 ,因為它常常導致“例外意大利面條”。 大多數現代框架不使用檢查異常-實際上,大多數框架都將現有的舊式檢查異常與未檢查異常包裝在一起。

暫無
暫無

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

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