当前位置: 首页 > 知识库问答 >
问题:

如何在spring中使用@ControllerAdvice处理异常,即使我们在catch块中处理异常

宦烈
2023-03-14

无法使用由try和catch块包围的@controlleradvice和@afterthollow when方法。

我可以一步一步解释

@RequestMapping(value = "/service/getDetails", method = RequestMethod.POST, produces = { "application/json" })
public ResponseEntity<Map<String, Object>> getDetails(@RequestBody Details details, HttpServletRequest request) {
    ResponseEntity<Map<String, Object>> response = null;
    try {
        /// Some code
    } catch (Exception e) {
        logger.error("Exception while DetailsController: " + e.getMessage());
        response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        /*
         * int status=response.getStatusCodeValue();
         * scheduledMailTrigerService.sendErrorLogInfo(request,e,status);
         */
    }
    return response;
}

  @ControllerAdvice
  public class AppExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = { Exception.class })
public String handleAnyException(Exception ex, WebRequest request) {
    System.out.println("Done");
    return "Done";
}

}

共有1个答案

谢墨竹
2023-03-14

您可以使用@around建议来捕获方法执行的结果...我的建议是从所有endpoint中删除try catch,只需编写一个try catch来包装procedingJoinPointprocede()执行。这样,在执行电子邮件发送逻辑的同时,当异常发生时,您可以返回ResponseEntity 400。

 类似资料:
  • 我已经浏览了所有相关的帖子,但是我的@Controlller建议似乎没有处理从Controller类抛出的自定义异常。但是@Controller类中的@ExceptionHandler确实处理了异常。我不知道是什么错误。 网状物xml: dispatcher servlet。xml: @控制器建议等级: @ControllerAdvice与控制器位于同一个包中。

  • 我正在使用Spring Boot 1.5.9开发我的应用程序。我需要实现jwt身份验证,我使用了jjwt库。以下代码来自我的自定义身份验证安全筛选器,它继承自。在这里,我试图从令牌解析用户名,当自动解析用户名时,jwt会验证用户名,并检查令牌的过期时间。我调试了它,它可以工作,所以接下来我想向客户端应用发送正确的消息,说明身份验证失败的原因。我想抛出一个ExpiredJwtException,并使

  • 我最近在我的Spring4/Hibernate Web应用程序中实现了Spring Security来处理登录/退出和不同的用户角色。 经过大量阅读,它现在似乎工作得很好,但我注意到,由于错误的Spring Security配置而引发的异常没有使用我的自定义处理程序进行优雅的处理,而是显示为一个丑陋的Tomcat错误页面(显示HTTP状态500-UserDetailsService是必需的,后跟一

  • 代码错误 行,我在控制台中得到如下错误:无法找到元素:{“method”:“id”,“selector”:“loginusername”}命令持续时间或超时:262毫秒

  • 本文向大家介绍SQL Server 2005 中使用 Try Catch 处理异常,包括了SQL Server 2005 中使用 Try Catch 处理异常的使用技巧和注意事项,需要的朋友参考一下 TRY...CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 - 包含可能产生异常的

  • 我目前正在尝试为spring boot实现一个自定义的错误处理程序,我已经用以下方法实现了它: 不知为什么这不起作用,并且异常仍然被抛给客户端,是否有某种方法捕获方法抛出的异常并忽略它。