zoukankan      html  css  js  c++  java
  • 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.效果

      

      

  • 相关阅读:
    腾讯云挂载文件服务器节点
    OpsManage 安装
    centos7 安装mysql
    vs code 新建vue项目
    Centos7 安装supervisor
    腾讯云Centos7 安装nginx
    django 生成pdf
    VM安装虚拟机
    ACM/ICPC 之 Floyd练习六道(ZOJ2027-POJ2253-POJ2472-POJ1125-POJ1603-POJ2607)
    ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9710500.html
Copyright © 2011-2022 走看看