在身体例外弹簧休息中添加新字段
2022-09-04 01:55:35
我想在我的 Rest 弹簧引导应用程序中处理异常。我知道使用@ControllerAdvice和响应实体,我可以返回一个表示我的错误的自定义对象,但我想要的是将一个新字段添加到执行异常的正文中。
我创建了一个自定义异常,该异常继承了具有额外属性的 RuntimeException,即字符串列表:
@ResponseStatus(HttpStatus.CONFLICT)
public class CustomException extends RuntimeException {
private List<String> errors = new ArrayList<>();
public CustomException(List<String> errors) {
this.errors = errors;
}
public CustomException(String message) {
super(message);
}
public CustomException(String message, List<String> errors) {
super(message);
this.errors = errors;
}
public List<String> getErrors() {
return errors;
}
public void setErrors(List<String> errors) {
this.errors = errors;
}
}
在我的控制器中,我只是以这种方式抛出这个自定义异常:
@GetMapping("/appointment")
public List<Appointment> getAppointments() {
List<String> errors = new ArrayList<>();
errors.add("Custom message");
throw new CustomException("This is my message", errors);
}
当我使用postman测试我的Rest端点时,似乎Spring boot不会整理我的错误字段,响应是:
{
"timestamp": "2017-06-05T18:19:03",
"status": 409,
"error": "Conflict",
"exception": "com.htech.bimaristan.utils.CustomException",
"message": "This is my message",
"path": "/api/agenda/appointment"
}
如果可以从异常中获取“path”和“timestamp”字段,则可以使用具有@ControllerAdvice的自定义对象,但是这两个属性没有 getter。
谢谢。