Diciamo che ho il seguente interfaccia Java che non potrà modificare:L'interfaccia Java non dichiara alcuna eccezione. Come gestire le eccezioni controllate dell'implementazione?
public interface MyInterface {
public void doSomething();
}
E ora la classe che implementa è come questo:
class MyImplementation implements MyInterface {
public void doSomething() {
try {
// read file
} catch (IOException e) {
// what to do?
}
}
}
non riesco a recuperare da non leggere il file.
Una sottoclasse di RuntimeException
può chiaramente aiutarmi, ma non sono sicuro se sia la cosa giusta da fare: il problema è che quell'eccezione non sarebbe quindi documentata nella classe e un utente della classe potrebbe ottenere quell'eccezione non sa nulla su come risolvere questo.
Cosa posso fare?
Siamo tutti d'accordo: l'interfaccia è difettosa.
Soluzione ho scelto
alla fine ho deciso di scrivere un MyVeryOwnInterface
che si estende MyInterface
e aggiunge come parte della firma dei metodi difettosi del MyRuntimeException
:
public interface MyVeryOwnInterface extends MyInterface {
public void doSomething() throws MyRuntimeException;
}
class MyImplementation implements MyVeryOwnInterface {
public void doSomething() throws MyRuntimeException {
try {
// read file
} catch (IOException e) {
throw new MyRuntimeException("Could not read the file", e);
}
}
}
Vedere: http://www.javapractices.com/topic/TopicAction.do?Id=44 –