En algún código antiguo de Java, encontré una clase que contiene una gran cantidad de métodos que usan el mismo código de manejo de errores (try-catch con mucho manejo de errores, registro, etc.). Parece que el primer método simplemente se copió y luego el código en el bloque de prueba se adaptó ligeramente. Esto es lo que básicamente se parece a:¿Cómo simplificar una clase con muchos códigos de manejo de errores pegados?
public class myClass{
public void doSomething() {
try {
//do something
} catch (Exception e) {
//extensive error handling
}
}
public void doSomethingElse() {
try {
//do something else
} catch (Exception e) {
//extensive error handling, copy-pasted from the above method
}
}
}
¿Cómo puede ser simplificado? No quiero cambiar la interfaz de la clase (mucho), me gustaría deshacerme de los bloques de captura pegados y copiados, de modo que solo el código del bloque try permanezca dentro del método original.
Pensé en usar el patrón Método de fábrica, donde un método implementa el manejo de errores y llama al método original en el bloque try. Pero entonces, todas las llamadas tendrían que pasar por este método.
¿Alguna idea?
¿Por qué no puedes simplemente poner el código común en un método que llamas desde ambos bloques catch? – John3136
¿por qué no simplemente escribe un método estático en una clase de manejador de excepciones, para ser llamado en el bloque catch? entonces catch block solo tendrá un par de instrucciones (llamar al manejador de excepciones, return). – vulkanino