007 使用SpringMVC开发restful API五--异常处理

一:任务

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.效果

  

 

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值