如何创建与预制类型不同的新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