zoukankan      html  css  js  c++  java
  • Spring Boot 6.统一处理异常

    package com.example.springbootstudy;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.servlet.http.HttpServletRequest;
    import java.util.Map;
    
    @ControllerAdvice  // 不指定包默认加了@Controller和@RestController都能控制
    //@ControllerAdvice(basePackages ="com.example.springbootstudy")
    public class ControllerAdviceHandler {
    
        private static final Logger logger = LoggerFactory.getLogger(ControllerAdviceHandler.class);
    
        @ResponseBody
        @ExceptionHandler(value = Exception.class)
        public String errorHandler(HttpServletRequest request, Exception exception) {
            writeErrorLogToFile(request, exception);
            return "系统异常";
        }
    
        // 将错误日志写到文件中
        private static void writeErrorLogToFile(HttpServletRequest request, Exception exception) {
            logger.error("                              ");
            logger.error("------------------------------");
            logger.error("系统异常 -- 请求地址:" + request.getRequestURI());
            printErrorQuestParameters(request.getParameterMap());
            logger.error("系统异常 -- 具体错误:" + exception.getMessage());
            logger.error("------------------------------");
        }
    
        // 打印系统异常时的请求参数
        private static void printErrorQuestParameters(Map<String, String[]> parameterMap) {
            for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
                logger.error("系统异常 -- 请求参数:" + entry.getKey() + " -- 请求值:" + forEachStringList(entry.getValue()));
            }
        }
    
        private static String forEachStringList(String[] values) {
            StringBuilder stringBuilder = new StringBuilder();
            for (String item : values) {
                stringBuilder.append(item);
                stringBuilder.append(";");
            }
            return stringBuilder.toString();
        }
    
    }

    测试:

        @PostMapping("appError")
        public String appError(@RequestParam String name) throws Exception {
            logger.info("请求参数 -- name:" + name);
            logger.error("抛出异常");
            throw new Exception("自定义异常");
        }

    结果:

  • 相关阅读:
    【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十六:VGA模块
    mini2440 u-boot下设置tftp
    mini2440 u-boot禁止蜂鸣器
    【转载】帧缓冲驱动程序分析及其在BSP上的添加
    debian7 amd64版本添加对x86包的支持
    debian7配置
    u盘安装debian 7(Wheezy) stabe
    【python练习题】实现字符串反转
    【python练习题】 删除列表中的重复元素(list的应用)
    【python练习题】冒泡排序 和插入排序 (list的应用)
  • 原文地址:https://www.cnblogs.com/hbolin/p/10671330.html
Copyright © 2011-2022 走看看