Reputation:
I have a Cage class:
public class Cage<T extends Animal> {
Cage(int capacity) throws CageException {
if (capacity > 0) {
this.capacity = capacity;
this.arrayOfAnimals = (T[]) new Animal[capacity];
}
else {
throw new CageException("Cage capacity must be integer greater than zero");
}
}
}
I am trying to instantiate an object of Cage in another class main method:
private Cage<Animal> animalCage = new Cage<Animal>(4);
I get the error: "Default constructor cannot handle exception type CageException thrown by implicit super constructor. Must define an explicit constructor." Any ideas? :o(
Upvotes: 4
Views: 13828
Reputation: 159754
You could use a use a helper method in the class where Cage
gets instantiated:
class CageInstantiator {
private Cage<Animal> animalCage = getCage();
private static Cage<Animal> getCage() {
try {
return new Cage<Animal>(4);
} catch (CageException e) {
// return null; // option
throw new AssertionError("Cage cannot be created");
}
}
}
Upvotes: 2
Reputation: 7507
This means that in the constructor of your other class you are creating the Cage class, but that constructor isn't properly handling the exception.
So either just catch the exception when you create the Cage
class in the other constructor, or make the constructor throws CageException
.
Upvotes: 4