Notre webapplication utilise un ExceptionMapper
à la carte des exceptions à Response
. Nous enregistrons les messages d'exception avant de lancer une nouvelle exception les suivants:
catch (SomeException ex) {
LOG.error(ex.getMessage());
throw new MyException(ex.getMessage());
}
Nous ne repoussons pas la même exception , donc ma question est de savoir si cela serait considéré comme un contre -modèle Log and Throw . Et ainsi, serait - il préférable d'enlever l'exploitation forestière dans des endroits semblables et les déplacer à plusieurs ExceptionMapper
classes:
@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
la source
la source
ex.getMessage()
, c'est déjà faux.Réponses:
Votre code ne comporte en fait pas un, mais trois contre- modèles:
Si vous avez suivi la meilleure pratique pour:
log.error("Error occurred", e);
vous ne rencontriez alors aucun dilemme, y compris le vôtre, car la trace de pile consignée inclurait également toutes les exceptions encapsulées.
la source