一:任务
1.任务
Spring Boot中默认的错误机制处理机制
自定义异常处理
二:Spring Boot中的默认错误处理机制
1.目前
浏览器访问的时候,
restful 接口主要是根据状态码进行判断的。
2.新建
如果想对404做处理
3.404.html
4.效果
所以访问一个页面
三:自定义异常处理
1.说明
客户端
服务器返回异常信息只包含错误信息,有时候还需要返回其他的信息的时候。
2.exception的信息改变
控制器
1 // @RequestMapping(value="/user/{id:\\d+}",method=RequestMethod.GET) 2 @JsonView(User.UserDetailView.class) 3 @GetMapping(value="/{id:\\d+}") 4 public User getInfo(@PathVariable(value="id") String idid){ 5 // System.out.println("idtt="+idid); 6 // User user=new User(); 7 // user.setUsername("tom"); 8 // return user; 9 throw new UserNotExistException(idid);10 11 }
exception:
1 package com.cao.exception; 2 3 public class UserNotExistException extends RuntimeException { 4 private String id; 5 6 public UserNotExistException(String id) { 7 super("UserNotExistException come"); 8 this.id=id; 9 }10 11 public String getId() {12 return id;13 }14 15 public void setId(String id) {16 this.id = id;17 }18 19 }
3.效果
4.新建一个控制器错误的控制类
只要出现下面的异常,这里就会处理
1 package com.cao.web.controller; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.springframework.http.HttpStatus; 7 import org.springframework.web.bind.annotation.ControllerAdvice; 8 import org.springframework.web.bind.annotation.ExceptionHandler; 9 import org.springframework.web.bind.annotation.ResponseBody;10 import org.springframework.web.bind.annotation.ResponseStatus;11 12 import com.cao.exception.UserNotExistException;13 14 //只处理其他控制器丢出来的异常,不处理http请求15 @ControllerAdvice16 public class ControllerExceptionHandler {17 //要处理的异常类18 @ExceptionHandler(UserNotExistException.class)19 //map转成json20 @ResponseBody21 //返回的状态码22 @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)23 public MaphandleUserNotExistException(UserNotExistException ex){24 Map result=new HashMap<>();25 result.put("id", ex.getId());26 result.put("message", ex.getMessage());27 return result;28 }29 }
5.效果