La mia applicazione fornisce un'interfaccia RESTful per eseguire alcune azioni. Sto usando ExceptionMapper
per la cattura di eccezioni, come NoResultException
o EntityNotFoundException
e quindi restituire un codice di stato 404, o eccezioni, come NumberFormatException
o ConstraintViolationException
e restituire un codice di stato 400 ... eccSame ExceptionMapper per diverse eccezioni
Il mio problema è solo che il ExceptionMapper
mi consente di scegliere un tipo di Eccezione ogni volta; quindi non posso usare la stessa classe per tutti gli errori 400 e altri tutti gli errori 404.
C'è un modo per creare un ExceptionMapper
che mappa due diversi tipi di eccezioni?
mia altra opzione è cambiare le mie funzioni per restituire una risposta, invece di una stringa (contrassegnati come @Produces("application/json"));
e quindi impostare il codice di stato ogni volta, ma penso che sia peggio ...
Ho pensato anche a questo; ma come dici tu non è pulito. Infatti; puoi scrivere diversi ExceptionMappers per classi diverse e un ExceptionMapper di una superclasse (come Exception); e le eccezioni con uno specifico ExceptionMapper lo useranno; e tutti gli altri useranno l'ExceptionMapper della sua superclasse. –
Preferirei ancora una serie di controlli instanceof contro la frammentazione di questa logica su diverse classi inutilmente piccole e perdere di vista il quadro generale, cioè quali codici di risposta vengono restituiti per quali tipi di eccezioni – Amalgovinus