这样做的一个可能途径是使用@ExceptionHandler
通知,在你的控制人内部制造手工艺。
@RestController
@RequestMapping(produces = APPLICATION_JSON_VALUE)
public class MyController {
@RequestMapping(value = "/find", method = GET)
public Object find() {
throw new UnsupportedOperationException("Not implemented yet!");
}
@ExceptionHandler
public ErrorListModel handleException(Exception exception) {
ExceptionModel exceptionModel = new ExceptionModel(1337, exception.getMessage());
ErrorListModel list = new ErrorListModel();
list.add(exceptionModel);
return list;
}
private class ErrorListModel {
private List<ExceptionModel> errors = new ArrayList<>();
public void add(ExceptionModel exception) {
errors.add(exception);
}
public List<ExceptionModel> getErrors() {
return errors;
}
}
private class ExceptionModel {
private int code;
private String message;
public ExceptionModel(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
}
私人课程ErrorListModel
和ExceptionModel
我只是帮助确定由此产生的“智者”机构应如何看待,我假定你已经拥有类似的课程。
find
方法只是给我们留下了一种例外,而这种例外被handleException<>/code>拦截。 方法,因为它附有<代码>@ExceptionHandler
的说明。 在此,我们创设了一个<代码>ExceptionModel,将其填入原始例外情形中的资料,并添加到一个<代码>ErrorListModel上,然后我们回去。
这一博客员额从2013年起,对特征的解释比我任何时候都好,还提到了另一个选择:@ControllerAdvice
。 它基本上允许你在其他控制人员中重新使用例外处理方法。