Exception Handling Exception AOP

Scene: common exception handling, avoiding try {} catch () {} directly with the code cleaner

 

use: 

1. Dependence:

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

 

2. Cut avoid direct method -> This uses a exceptionHandlerUtils, then sliced ​​utils

exceptionHandlerUtils:

@Slf4j
@Component
public class ExceptionHandlingUtils {
   
   
    public void throwDAOException(Exception e){
        e.printStackTrace();
        log.error("Failed to operate booking into Mysql, caused by: {}",e.getMessage(),e);
        throw new DAOException(e.getMessage(),e);
    }
    
    public void printEmailException(Exception e,String subject, String to) {
        e.printStackTrace();
        log.error("***EmailException,Failed to send email {} to {}***, caused by: {}",subject,to,e.getMessage());
    }
    
    public void throwJSONConvertException(Exception e) {
        e.printStackTrace();
        log.error("Exception encountered at read json tree, caused by: {}",e.getMessage(),e);
        throw new JSONConvertException(e.getMessage(),e);
    }
}

 

3. AOP sections:

ExceptionHandlingAspect
@Aspect
@Configuration
@Slf4j
public class ExceptionHandlingAspect {

    @Value("${mail.common.from}")
    private String from;
    @Value("${mail.common.to}")
    private String to;
    @Autowired
    private MesgHelper mesgHelper;
    
/**
 * @param joinPoint
 * @param ex  ,获取的异常
 */
    @AfterThrowing(pointcut = "execution(* com.icil.elsa.auo.common.util..*(..))", throwing = "ex")
    public void afterThrowingCommon(JoinPoint joinPoint, Throwable ex){
        log.error("Exception was detected, caused by {}",ex.getMessage());
        if(ex instanceof DAOException){
            commonProcess(ex);
        }
        else if(ex instanceof RestClientException){
            commonProcess(ex);
        }
        else if(ex instanceof ConnectionException){
            commonProcess(ex);
        }
     
    }
   
    
    private void commonProcess(Throwable ex) {
        log.error("Processing exception with name {}",ex.getClass().getSimpleName());
        Object[] paras = {DateUtils.getBeiJingDateLoc()};
        String subject = mesgHelper.getMessage("exception.handling.common.subject", paras, null);
        String exSimpleName = ex.getClass().getSimpleName();
        String body = ex.getMessage();
        Object[] params = { exSimpleName, body};
        String content = mesgHelper.getMessage("exception.handling.common.content", params, null);
        MailUtils.sendMail(to,from,subject,content);
    }
}

 

4. Use: 

try {
 //doing something 
}catch(Exception e ){
exceptionHandlingUtils.throwDAOException(e);
}  

 

Guess you like

Origin www.cnblogs.com/lshan/p/11271827.html