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

理解ExceptionHandlerExceptionResolver的困难

居和顺
2023-03-14

我无法理解为什么ExceptionHandlerExceptionResolver会抛出异常。我已经编写了一个自定义@RestControlller建议ExceptionHandler来捕获Spring Boot应用程序抛出的异常。捕获后,我的ExceptionHandler返回来自抛出的异常的消息作为响应。但我仍然从ExceptionHandlerExceptionResolver收到一条日志消息,我不知道为什么。

这里是日志消息:

2022-05-04 10:08:53.043  INFO 17600 --- [nio-8080-exec-3] at.sds.wm.common.CommonExceptionHandler  : Equipment Barbell 660Kg exists already. Either id already taken or name combined with same equipment already saved
2022-05-04 10:08:53.049  WARN 17600 --- [nio-8080-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [at.sds.wm.equipment.exceptions.EquipmentExistsAlreadyException: Equipment Barbell 660Kg exists already. Either id already taken or name combined with same equipment already saved]

我首先想到,调用ExceptionHandlerExceptionResolver是因为我的ExceptionHandler抛出了一个异常,但事实并非如此。

关于如何压缩第二个日志的任何提示和技巧,或者有人能解释为什么调用ExceptionHandlerExceptionResolver吗?

下面是调用的ExceptionHandler部分的代码片段:

    @ExceptionHandler(value = {WorkoutExistsAlreadyException.class, EquipmentExistsAlreadyException.class, ExerciseExistsAlreadyException.class})
    @ResponseStatus(code = HttpStatus.CONFLICT)
    public String handleExistsAlreadyException(RuntimeException ex) {
        log.info(ex.getMessage());
        return ex.getMessage();
    }

共有1个答案

扶珂
2023-03-14

这与应用程序属性spring有关。mvc。日志解决的异常。这在spring boot中默认设置为false,但如果使用spring boot开发工具,则会切换为true。

因此,在这种情况下,您必须为异常处理程序解析器声明spring.mvc.log-解析-异常=false以停止编写有关异常的警告。

引用的Spring boot文档

 类似资料:
  • 下面的代码是我的程序的一部分。它不执行,它说C++禁止将字符串常量转换为字符*。我如何修复这个错误?

  • 我在基于频率表的哈夫曼树上工作。频率表是通过计算给定字符串中字符的频率并将相应项(字符和频率)放置在链接列表中生成的。然后,我需要将项目按频率顺序放置在哈夫曼树中。我得到了它背后的逻辑是确保每个子树都有右节点和左节点,添加它们的频率,用它们添加的频率创建一个根节点,将下一个频率分别放在左树和右树中,并重复这个过程,直到没有更多的频率,子树与添加其频率的根连接;我遇到的问题是如何实现代码。 代码相当

  • 我试图在Java实现Ford Fulkerson算法。到目前为止,我有了一个带节点和边的图。节点包含一个ID字符串和一个边的邻接列表。边包含容量和它通向的节点。 我正在尝试理解维基百科页面上的psudo代码,以及如何实现它(我正在使用Java)。这是我目前所理解的: > 首先我将图中所有边的流设置为零。(什么是表示流的好方法?直接在我的图的边中作为变量?) 第二步是创建残差图,它是一个网络,其中边

  • 我在理解应用程序中的多线程时遇到了一个大问题,因此我发现了一个bug。我已经检查了我认为所有的可能性,但我仍然得到各种(有时意想不到的)错误。 也许这里有人能给我建议,我应该做什么。 在我的项目中,我使用了两个外部库: GraphView-为图形绘制提供视图 EventBus-为应用程序组件之间的轻松通信提供接口 至于应用程序,其结构如下: 其思想是,ProcessThread通过事件总线计算数据

  • 问题内容: 这是一个例子: (等等。) 这是另一个: 取自于构建在节点上的简单记事本 这些是困扰我的问题: 到底是做什么的?如果不存在会发生什么? 为什么第二部分作为参数而第一部分不是参数? 编辑: 问题答案: Express使用具有回调的中间件函数(动作完成时调用的函数),而next具有此目的(这是触发Express堆栈中下一个中间件的回调)。所有Express中间件(与Connect兼容)具有