我在JAVA的同一个包中有两个类。
我有一个构造函数的一个类,我试图创建自己:
public class ZooException extends Exception {
public ZooException(String error) {
super(error);
}
}
另一个类需要在某一点调用此异常:
public class Zoo<T extends Animal>
Zoo(int capacity) {
if (capacity <= 1) {
throw new ZooException("Zoo capacity must be larger than zero");
}
}
我注意到这里有两件事
关于我可以做什么来解决Zoo类中的这个错误的想法?提前谢谢!
答案 0 :(得分:11)
您正在扩展Exception
,一个已检查的异常,这意味着抛出该异常的任何方法都需要这样说:
Zoo(int capacity) throws ZooException {
任何调用该构造函数的代码都必须try {} catch {}
或再次抛出它。
如果您不希望选中它,请改用extends RuntimeException
答案 1 :(得分:1)
关于未经检查的例外 @Will P 是对的。
关于serialVersionUID,这意味着 - 因为异常是可序列化的 - 如果您随时确定您的类的先前版本应该与您的新版本(通常用于公共API)不兼容,例如,该类已经发生了重大变化,只需更改唯一ID,读取旧版本的对象会引发异常。
答案 2 :(得分:0)
Zoo(int capacity) throws ZooException {
if (capacity <= 1) {
throw new ZooException("Zoo capacity must be larger than zero");
}
您必须声明已检查的异常或使用try-catch块处理它们。尝试阅读例外情况:http://docs.oracle.com/javase/tutorial/essential/exceptions/