如何創建與預製類型不同的新Exception
?如何編寫自定義例外?
public class InvalidBankFeeAmountException extends Exception{
public InvalidBankFeeAmountException(String message){
super(message);
}
}
它會顯示爲InvalidBankFeeAmountException這是寫在第一行的警告。
如何創建與預製類型不同的新Exception
?如何編寫自定義例外?
public class InvalidBankFeeAmountException extends Exception{
public InvalidBankFeeAmountException(String message){
super(message);
}
}
它會顯示爲InvalidBankFeeAmountException這是寫在第一行的警告。
所有你需要做的就是創建一個新的class
並擁有它extend Exception
。
如果你想要一個未被選中的Exception
,你需要extend RuntimeException
。
注意:一個檢查Exception
是一個需要你要麼環繞Exception
在try
/catch
塊或對方法聲明中的「throws
」條款。 (如IOException
)未勾選Exceptions
可能與選中Exceptions
一樣被拋出,但您不需要以任何方式明確處理它們(IndexOutOfBoundsException
)。
例如:
public class MyNewException extends RuntimeException {
public MyNewException(){
super();
}
public MyNewException(String message){
super(message);
}
}
只是延長要麼
Exception
,如果你想檢查你的異常(即:在需要throws子句)RuntimeException
,如果你想你的例外是未經檢查的。看看:
http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1
給出一個例子存在第2頁:與時和一套準則沿着
public class DuplicateUsernameException
extends Exception {
public DuplicateUsernameException
(String username){....}
public String requestedUsername(){...}
public String[] availableNames(){...}
}
爲什麼你會創建你自己的例外。
請務必避免出現異常情況,特別是檢查到的異常情況。我建議閱讀Joshua Bloch的Effective Java第9章,特別是他的第60項(贊成使用標準例外)。他的建議還包括對可從中恢復的異常使用經過檢查的異常,使用未經檢查的異常(RuntimeExceptions)進行編程錯誤,並避免不必要地使用已檢查的異常。
如果在發現編程錯誤時拋出InvalidBankAccount異常,那麼您可能只想引發標準的未經檢查的Java IllegalStateException。 (這整齊地迴避了聲明serialVersionUID的需要。)
我自己創建了一個Exception,如上所示。使用該特殊異常的名稱創建一個類並擴展Exception。 但是 它有以下警告:該異常的可序列化類<名稱>異常沒有聲明long的靜態最終serialVersionUID字段。 我該如何解決它? – Johanna 2009-07-01 19:57:18
如果你不想擔心這個警告,你不必擔心。因爲Exception類是可序列化的,所以它需要你爲這個類設置一個序列號。但是,既然這只是一個警告,我通常會忽略它。 – jjnguy 2009-07-01 20:01:22