Nuestra aplicación web está utilizando un ExceptionMapper
para asignar algunas excepciones Response
. Registramos los mensajes de excepción antes de lanzar una nueva excepción de la siguiente manera:
catch (SomeException ex) {
LOG.error(ex.getMessage());
throw new MyException(ex.getMessage());
}
No estamos volviendo a lanzar la misma excepción , por lo que mi pregunta es si esto se consideraría un antipatrón Log and Throw . Y por lo tanto, sería mejor eliminar el registro en lugares similares y moverlos a varias ExceptionMapper
clases de la siguiente manera:
@Provider
public class MyExceptionMapper implements ExceptionMapper<MyException> {
// bla bla
@Override
public Response toResponse(final MyException ex) {
LOG.error(ex.getMessage());
return Response.status(400).entity("something").build();
}
}
java
anti-patterns
Diyarbakir
fuente
fuente
ex.getMessage()
, eso ya está mal.Respuestas:
Su código en realidad no tiene uno, sino tres antipatrones:
Si siguió la mejor práctica para:
log.error("Error occurred", e);
entonces no enfrentaría ningún dilema, incluido el actual, porque el seguimiento de pila registrado también incluiría todas las excepciones envueltas.
fuente