首页 > 文章列表 > Springboot2.0中如何处理自定义异常并返回json

Springboot2.0中如何处理自定义异常并返回json

json springboot
171 2023-05-19

Springboot2.0中如何处理自定义异常并返回json

1. 编写自定义异常类

package cn.jfjb.crud.exception;



public class UserNotExistException extends RuntimeException {

  public UserNotExistException() {

    super("用户不存在");

  }

}

2. 处理自测试异常

package cn.jfjb.crud.handler;



import cn.jfjb.crud.exception.UserNotExistException;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseBody;



import java.util.HashMap;

import java.util.Map;





@ControllerAdvice

public class MyExceptionHandler {



  @ResponseBody

  @ExceptionHandler(UserNotExistException.class)

  public Map<String, Object> handleException(Exception e) {

    Map<String, Object> map = new HashMap<>();

    map.put("code", "user.notexist");

    map.put("message", e.getMessage());

    return map;

  }

}

3. 配置application.yml文件(不配置的话无法获取exception)

server:

 error:

  include-exception: true

4. 编写测试

package cn.jfjb.crud.controller;



import cn.jfjb.crud.exception.UserNotExistException;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;





@Controller

public class HelloController {

  

  @RequestMapping({"/testException"})

  public String testException(@RequestParam("user") String user) {

    if (user != "aaa") {

      throw new UserNotExistException();

    }

    return "index";

  }

}