1. 对用返回404等特定状态码的错误,通过工具访问不变只需要修改页面访问错误提示信息的情况下,可以在
src/main/resources下建立resource/error目录,并在该目录建立类似404.html的文件,
页面访问某个调用不存在返回404错误时,会显示该界面。
2. 自定义异常类返回信息(我们自定义一个异常的来进行处理)
例如,我们新顶一个了一个运行时的异常,并在userException接口来抛出:
/**@Description: 自定义一个异常信息
* @date: 2020-03-01
*/
public class UserNotExistException extends RuntimeException {
private static final long serialVersionUID = 3806646633448261548L;
String id;
public UserNotExistException(String id){
super("user not exception!");
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
@GetMapping("/userException")
public User userException(@PathVariable String id){
throw new UserNotExistException("123");
}
这时发现异常的输出是默认的,如果想额外多一些信息,比如要返回用户的ID信息,需要自定义异常的处理类:
@ControllerAdvice //这个注解的意思是:这个类的方法都是用来其他controller抛出的异常的
public class ControllerExceptionHandler {
@ExceptionHandler(UserNotExistException.class) //这个方法是处理UserNotExistException异常的
@ResponseBody //返回的Map需要转换成json
@ResponseStatus(HttpStatus.BAD_REQUEST) //定义一个返回的Http请求的状态码
public Map<String,Object> handleUserNotException(UserNotExistException ex){
Map<String, Object> exceptionMessageMap = new HashMap<>();
exceptionMessageMap.put("id", ex.getId());
exceptionMessageMap.put("message",ex.getMessage());
return exceptionMessageMap;
}
}
这时,调用后返回的值就是我们自定义的Map中的内容。
{"id":"123","message":"user not exception!"}