Re: catching exceptions in subclass' constructor?
bugbear wrote:
(in these examples my Exceptions are chosen arbitrarily
from those in java.lang)
Consider a class 'A'
class A {
public A(int i) throws NoSuchFieldException {
};
};
It (for reasons all its own) can throw an exception.
Now consider a sub-class 'B', that extends 'A'.
I would like to give it 2 constructors, one a simple
"clone" of the 'A' constructor, and a parameterless
constructor. I want this because in my real
app 'B' has many subclasses.
If a parameterless constructor that throws
no exceptions can be managed, I won't need to declare
a constructor at all in the (many) sub classes,
which will be helpful to me.
The first constructor is trivial.
class B extends A {
public B(int i) throws NoSuchFieldException {
super(i);
};
}
Now, since I am going to (carefully) provide
a valid default argument in the B() constructor,
I do not want it to throw a checked exception,
so I map" it to a runtime exception.
So I tried:
public B() {
try {
this(10);
} catch(NoSuchFieldException e) {
throw new IllegalStateException(e);
}
}
but the compiler says:
" call to this must be first statement in constructor"
I would welcome advice on how to achieve my goal (a parameterless
constructor for B that does not throw an exception).
I think the best approach would be to move the functionality
that potentially will throw an exception from the constructor
to another method (an "init" method or whatever).
Arne