Digamos que tengo el siguiente interfaz Java que Puede que no modificar:La interfaz de Java no declara ninguna excepción. ¿Cómo administrar las excepciones marcadas de la implementación?
public interface MyInterface {
public void doSomething();
}
Y ahora la clase que implementa es la siguiente:
class MyImplementation implements MyInterface {
public void doSomething() {
try {
// read file
} catch (IOException e) {
// what to do?
}
}
}
no puedo recuperarse de no leer el archivo.
Una subclase de RuntimeException
claramente me puede ayudar, pero no estoy seguro de si es lo correcto: el problema es que esa excepción no estaría documentada en la clase y un usuario de la clase posiblemente obtendría esa excepción y no sabes nada de resolver esto.
¿Qué puedo hacer?
Todos estamos de acuerdo: la interfaz es defectuosa.
solución I eligió
finalmente me decidí a escribir una MyVeryOwnInterface
que se extiende MyInterface
y agrega como parte de la firma de los métodos defectuosos 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);
}
}
}
Ver: http://www.javapractices.com/topic/TopicAction.do?Id=44 –