Lassen Sie uns sagen, dass ich die folgende Java-Schnittstelle, die ich nicht ändern kann:Die Java-Schnittstelle gibt keine Ausnahme aus. Wie man geprüfte Ausnahmen der Implementierung verwaltet?
public interface MyInterface {
public void doSomething();
}
Und nun die Klasse der Umsetzung es so ist:
class MyImplementation implements MyInterface {
public void doSomething() {
try {
// read file
} catch (IOException e) {
// what to do?
}
}
}
ich nicht von nicht lesen erholen die Datei.
Eine Unterklasse von RuntimeException
kann mir eindeutig helfen, aber ich bin nicht sicher, ob es das Richtige zu tun ist: vielleicht das Problem ist, dass diese Ausnahme würde dann nicht in der Klasse dokumentiert werden und ein Benutzer der Klasse bekommen würde Diese Ausnahme weiß nichts darüber, dies zu lösen.
Was kann ich tun?
Wir sind uns alle einig: die Schnittstelle ist fehlerhaft.
Lösung wählte ich
ich ein MyVeryOwnInterface
entschieden schreiben schließlich, dass die MyRuntimeException
MyInterface
und fügt als Teil der Signatur der fehlerhaften Methoden erweitert:
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);
}
}
}
Siehe: http://www.javapractices.com/topic/TopicAction.do?Id=44 –