Reputation:
I have a two classes in the same package in JAVA.
One class in which I have a constructor an exception I tried to create myself:
public class ZooException extends Exception {
public ZooException(String error) {
super(error);
}
}
Another class needs to call this exception at one point:
public class Zoo<T extends Animal>
Zoo(int capacity) {
if (capacity <= 1) {
throw new ZooException("Zoo capacity must be larger than zero");
}
}
I notice two things here
Any ideas on what I can do to solve this error in the Zoo class? Thank you in advance!
Upvotes: 4
Views: 23610
Reputation: 16234
About unchecked exceptions @Will P is right.
About serialVersionUID, this means - since Exception is Serializable - if you anytime decide that a previous version of your class should be incompatible with your newer version ( usually for public APIs), for example, that class had undergone major changes, simply change the unique id, and reading an object of the old version would throw an exception.
Upvotes: 1
Reputation: 5537
Zoo(int capacity) throws ZooException {
if (capacity <= 1) {
throw new ZooException("Zoo capacity must be larger than zero");
}
You must declare checked exceptions or handle them with a try-catch bock. Try reading up on exceptions: http://docs.oracle.com/javase/tutorial/essential/exceptions/
Upvotes: 0
Reputation: 14529
You are extending Exception
, a checked exception, this means that any method which throws that exception needs to say so:
Zoo(int capacity) throws ZooException {
And any code calling that constructor will have to try {} catch {}
or throw it again.
If you don't want it to be checked, use extends RuntimeException
instead
Upvotes: 12