我有一个MQ Spring Boot PaaS应用程序,我需要通过一个公共异常处理程序类(GlobalExceptionHandler)来实现异常处理。我的PaaS应用程序从源队列接收消息,通过spring jpa执行一些数据库操作,并将响应写回目标队列。
我需要通过GlobalExceptionHandler类处理所有数据库RuntimeException,自定义业务异常和其他已检查异常。
我的GlobalExceptionHandler将为每个异常定义处理程序(方法)。在我的处理程序中,我将首先记录异常,然后我将创建[错误代码,desc],然后我需要将其返回到主流程。
我的申请表中没有任何控制器。所以我想,我不能使用@ControllerAdvice。目前我正在使用spring AOP @AfterThrowing,但是我无法从处理程序返回[code,desc]。
@AfterThrowing(pointcut = "execution(* com.abc.xyz.service..*(..)) ",
throwing = "dataNotFoundException")
public void handleDataNotFoundException(DataNotFoundException dataNotFoundException) {
LOGGER.info("Info : " + dataNotFoundException.getMessage());
// code, desc need to create here and send it back to calling place.
// I need to change the return type here from void.
}
任何人都可以指导我在这里实施异常处理。
答案 0 :(得分:0)
正如我解释here,@AfterThrowing
无法修改返回值或以其他方式更改应用程序的执行流程。你甚至无法在那里发现异常。您需要使用@Around
建议。
我建议您先阅读一些文档,然后再提出更多的后续问题。