通过 Spring 建议在基于 MQ 的 Spring 引导应用程序中进行全局异常处理



我有一个MQ Spring Boot PaaS应用程序,我需要通过一个通用的异常处理程序类(GlobalExceptionHandler)实现异常处理。我的 PaaS 应用程序从源队列接收消息,通过 spring jpa 执行一些数据库操作,并将响应写回目标队列。

我需要通过 GlobalExceptionHandler 类处理所有数据库运行时异常、自定义业务异常和其他检查异常。

我的全局异常处理程序将为每个异常定义处理程序(方法)。在我的处理程序中,我将首先记录异常,然后我将创建一个 [错误代码,desc],然后我需要将其返回到主流。

我的应用程序中没有任何控制器。所以我想,我不能使用@ControllerAdvice。目前我正在使用弹簧 AOP @AfterThrowing如下,但我无法从处理程序返回 [代码, 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.
}

任何人都可以指导我在这里实施异常处理。

正如我在这里解释的,@AfterThrowing不能修改返回值或以其他方式更改请求的执行流。您甚至无法在那里捕获异常。您需要改用@Around建议。

我建议您先阅读一些文档,然后再提出更多后续问题。

最新更新