一:任务
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 @ControllerAdvice 16 public class ControllerExceptionHandler { 17 //要处理的异常类 18 @ExceptionHandler(UserNotExistException.class) 19 //map转成json 20 @ResponseBody 21 //返回的状态码 22 @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 23 public Map<String,Object> handleUserNotExistException(UserNotExistException ex){ 24 Map<String,Object> result=new HashMap<>(); 25 result.put("id", ex.getId()); 26 result.put("message", ex.getMessage()); 27 return result; 28 } 29 }
5.效果