栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 自定义全局异常处理器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 自定义全局异常处理器

SpringBoot整合Swagger
    • 一、maven依赖
    • 二、GlobalExceptionHandler.java
    • 三、ResponseStandard.java
    • 四、logback.xml
    • 五、测试

GitHub: link. 欢迎star

注意:本篇博客风格(不多比比就是撸代码!!!)

一、maven依赖
        
            org.projectlombok
            lombok
            1.18.22
            provided
        
二、GlobalExceptionHandler.java
import com.andon.springbootutil.domain.ResponseStandard;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;


@Slf4j
@RestControllerAdvice //对Controller增强,并返回json格式字符串
public class GlobalExceptionHandler {

    
    @ExceptionHandler(Exception.class)
    public ResponseStandard exception(Exception e, HttpServletRequest request) {
        log.error("request error!! method:{} uri:{}", request.getMethod(), request.getRequestURI());
        log.error(getExceptionDetail(e));
        return ResponseStandard.builder().code(-1).message(request.getMethod() + " " + request.getRequestURI() + " " + e.getMessage()).build();
    }

    
    public String getExceptionDetail(Exception e) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(e.getClass()).append(System.getProperty("line.separator"));
        stringBuilder.append(e.getLocalizedMessage()).append(System.getProperty("line.separator"));
        StackTraceElement[] arr = e.getStackTrace();
        for (StackTraceElement stackTraceElement : arr) {
            stringBuilder.append(stackTraceElement.toString()).append(System.getProperty("line.separator"));
        }
        return stringBuilder.toString();
    }
}
 
三、ResponseStandard.java 
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;


@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResponseStandard implements Serializable {

    private int code;
    private String message;
    private T data;
    private int total;

    public static  ResponseStandard successResponse(T t) {
        ResponseStandard response = new ResponseStandard<>();
        response.setCode(200);
        response.setMessage("success!!");
        response.setData(t);
        response.setTotal(0);
        return response;
    }

    public static  ResponseStandard failureResponse(T t) {
        ResponseStandard response = new ResponseStandard<>();
        response.setCode(-1);
        response.setMessage("failure!!");
        response.setData(t);
        response.setTotal(0);
        return response;
    }
}
四、logback.xml



    
    
        
            
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n
            UTF-8
        
    

    
    
        
        ./logs/info/log-stack.log
        
        true
        
        
            INFO
            
            ACCEPT
            DENY
        
        
        
            
            ./logs/info/log-stack.%d{yyyy-MM-dd}.log
            
            30
        
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n
            UTF-8
        
    

    
    
        ./logs/error/log-stack.log
        true
        
            ERROR
            ACCEPT
            DENY
        
        
            ./logs/error/log-stack.%d{yyyy-MM-dd}.log
            
            30
        
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n
            UTF-8
        
    
    
    
        ./logs/debug/log-stack.log
        true
        
            DEBUG
            ACCEPT
            DENY
        
        
            ./logs/debug/log-stack.%d{yyyy-MM-dd}.log
            
            30
        
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n
            UTF-8
        
    
    
    
        
        
        
        

    


    
        
        
        
    


五、测试




GitHub: link. 欢迎star

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号