Nuestra aplicación web está utilizando un ExceptionMapperpara 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 ExceptionMapperclases 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