tôi đã xác định một xử lý ngoại lệ toàn cầu phục vụ nghỉ ngơi mùa xuân Boot dựa của tôi:Xuân Boot tùy chỉnh ngoại lệ trong một dịch vụ nghỉ ngơi
@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;
}
}
và ServiceException tùy chỉnh:
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
}
cho đến nay rất tốt, khi một ngoại lệ được kích hoạt, trình điều khiển hoạt động như bình thường và phản hồi với:
{
"timestamp": 1413883870237,
"status": 500,
"error": "Internal Server Error",
"exception": "org.example.ServiceException",
"message": "somthing goes wrong",
"path": "/index"
}
nhưng thứ e trường errorCode không được hiển thị trong phản hồi JSON.
Vậy làm cách nào tôi có thể xác định phản hồi ngoại lệ tùy chỉnh trong ứng dụng của mình.
Hi Andy, đây Nếu lớp ngoại lệ tùy chỉnh mở rộng với ngoại lệ hoặc Throwable sau đó lỗi dụ sẽ UnhandledThrowException tại sao nó đang xảy ra. – KSK
@KSK Nó không rõ ràng với tôi như thế nào đó là liên quan đến câu hỏi này một câu trả lời. Tôi nghĩ bạn nên hỏi một câu hỏi mới với một số chi tiết hơn –
tuyệt vời, cảm ơn bạn Andy –