一、简介
SpringBoot的WEB异常捕获,如果是WEB项目的话,可以直接处理Controller中的异常。如果不是WEB项目的话,就需要使用AspectJ来做切面。
二、WEB项目
package com.yungoal.handler;import lombok.extern.log4j.Log4j2;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;@ControllerAdvice@Log4j2public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) public String exception(Exception e, Model model){ log.error("find exception:e={}",e.getMessage()); model.addAttribute("mes",e.getMessage()); return "pages/500"; }}
三、非WEB项目
package com.yungoal.syncbackend.handler;import lombok.extern.log4j.Log4j2;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;@Component@Aspect@Log4j2public class GlobalExceptionHandler { @Pointcut("execution(* com.yungoal.syncbackend.scheduleds.*.*(..))") public void pointCut() { } @Around("pointCut()") public Object handlerException(ProceedingJoinPoint proceedingJoinPoint) { try { return proceedingJoinPoint.proceed(); } catch (Throwable ex) { log.error("execute scheduled occur exception.", ex); } return null; }}