[spring-boot] ControllerAdvice异常类

Posted anny0404

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[spring-boot] ControllerAdvice异常类相关的知识,希望对你有一定的参考价值。

package com.example.demo.exception;

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;

/**
 * Anny的springboot項目異常類
 */
@ControllerAdvice
public class MyControllerAdvice 

    /**
     * 全局捕获异常类,
     *      · 只作用在RequestMapping方法上,所有的异常信息都会被捕获
     * @param ex
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Map<String,Object> errorHandler(Exception ex)
        Map<String,Object> map = new HashMap<>();
        map.put("code",-1);
        map.put("msg",ex.getMessage());
        return map;
    

    /**
     * 自定义异常
     * @param ex
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = BusinessException.class)
    public Map<String,Object> errorBusinessHandler(BusinessException ex)
        Map<String,Object> map = new HashMap<>();
        map.put("code",ex.getCode());
        map.put("msg",ex.getMsg());
        return map;
    

package com.example.demo.exception;

/**
 * 自定义异常类
 */
public class BusinessException extends RuntimeException 

    private int code;
    private String msg;

    public BusinessException(int code, String msg) 
        super();
        this.code = code;
        this.msg = msg;
    

    public int getCode() 
        return code;
    

    public void setCode(int code) 
        this.code = code;
    

    public String getMsg() 
        return msg;
    

    public void setMsg(String msg) 
        this.msg = msg;
    
package com.example.demo.controller;

import com.example.demo.exception.BusinessException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/hello")
public class HelloController 

    private static Logger logger = LoggerFactory.getLogger(HelloController.class);

    @Value("$anny.msg")
    private String msg;

    @RequestMapping("/springBoot")
    public String Hello()
        //系统异常
//        int no = 1/0;
//        return msg;
        //自定义异常
        throw new BusinessException(999999999,"你瞅啥");
    

 

以上是关于[spring-boot] ControllerAdvice异常类的主要内容,如果未能解决你的问题,请参考以下文章

基于spring-boot的测试桩设计--几种常见的controller

Spring-boot 配置Aop获取controller里的request中的参数以及其返回值

spring-boot主要注解

spring-boot实战04:Spring Boot构建RESTful API

基于spring-boot的应用程序的单元测试方案

Spring-boot入门