代码如下:

@ControllerAdvice
public class GlobalExceptionHandler {

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

    /**
     * 处理Controller层通用 BusinessException 异常
     * 可以防止Controller未处理异常的程序中止,进行全局捕获
     *
     * @ExceptionHandler(value = Exception.class) 可以定义多个。
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public BaseResponse<?> exceptionHandler(Exception e) {

        String errorInfo = e + IOUtils.LINE_SEPARATOR + String.join(IOUtils.LINE_SEPARATOR, Optional.ofNullable(e.getStackTrace()).map(els -> Arrays.stream(els).map(el -> new StringBuilder().append("    定位:").append(el.getClassName()).append(".").append(el.getMethodName()).append("(").append(el.getFileName()).append(":").append(el.getLineNumber()).append(")").toString()).collect(Collectors.toList())).orElse(Collections.emptyList()));

        logger.error("====异常信息:{}", errorInfo);
        return BaseResponse.errorParameter(errorInfo);
    }

}

 

执行效果:

    控制台打印效果:

 

    前端调用返回效果:

 

 

posted on 2023-09-18 11:33  花开浪漫拾  阅读(74)  评论(0编辑  收藏  举报