[英]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以來,它不應該抱怨...
誰能告訴我我在這里想念的嗎?
擴展樹
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.