I have defined a global exception handling in my Spring Boot based Rest service:
@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; } } and a custom ServiceException:
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 } so far so good, when an exception is fired the controller works as it should and respond with:
{ "timestamp": 1413883870237, "status": 500, "error": "Internal Server Error", "exception": "org.example.ServiceException", "message": "somthing goes wrong", "path": "/index" } but the field errorCode isn't shown in the JSON response.
So how can I define a custom exception response in my application.