Unsere Webanwendung verwendet eine ExceptionMapper
, um einige Ausnahmen zuzuordnen Response
. Wir protokollieren die Ausnahmemeldungen, bevor wir eine neue Ausnahme auslösen:
catch (SomeException ex) {
LOG.error(ex.getMessage());
throw new MyException(ex.getMessage());
}
Wir lösen nicht dieselbe Ausnahme erneut aus , daher ist meine Frage, ob dies als ein Protokoll- und Wurf-Antipattern angesehen wird . Daher ist es besser, die Protokollierung an ähnlichen Stellen zu entfernen und sie ExceptionMapper
wie folgt in die verschiedenen Klassen zu verschieben :
@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
quelle
quelle
ex.getMessage()
, das ist schon falsch.Antworten:
Ihr Code enthält nicht nur ein, sondern drei Antimuster:
Wenn Sie die Best Practice befolgt haben, um:
log.error("Error occurred", e);
Dann stünden Sie nicht vor einem Dilemma, einschließlich Ihres aktuellen, da der protokollierte Stacktrace auch alle umschlossenen Ausnahmen enthielte.
quelle