Ho definito una gestione globale eccezione nel mio servizio Resto basato Primavera Boot:Primavera Boot eccezione personalizzata all'interno di un servizio REST
@ControllerAdvice
public class GlobalExceptionController {
private final Logger LOG = LoggerFactory.getLogger(getClass());
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Internal application error")
@ExceptionHandler({ServiceException.class})
@ResponseBody
public ServiceException serviceError(ServiceException e) {
LOG.error("{}: {}", e.getErrorCode(), e.getMessage());
return e;
}
}
e un ServiceException personalizzato:
public class ServiceException extends RuntimeException {
private static final long serialVersionUID = -6502596312985405760L;
private String errorCode;
public ServiceException(String message, String errorCode, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}
// other constructors, getter and setters omitted
}
finora tutto bene, quando un'eccezione viene attivata, il controller funziona come dovrebbe e risponde con:
{
"timestamp": 1413883870237,
"status": 500,
"error": "Internal Server Error",
"exception": "org.example.ServiceException",
"message": "somthing goes wrong",
"path": "/index"
}
ma th Il campo errorCode non viene mostrato nella risposta JSON.
Quindi, come è possibile definire una risposta alle eccezioni personalizzata nella mia applicazione.
Ciao Andy, qui Se la classe eccezione personalizzata estende con l'eccezione o Throwable allora errore esempio sarebbe UnhandledThrowException perché sta accadendo. – KSK
@KSK Non mi è chiaro come sia correlata a questa domanda una risposta. Penso che sarebbe meglio fare una nuova domanda con qualche altro dettaglio –
ottimo, grazie Andy –