ExceptionHandlerExceptionResolver的理解难点
Difficulties in understanding ExceptionHandlerExceptionResolver
我无法理解为什么 ExceptionHandlerExceptionResolver 抛出异常。
我写了一个自定义 @RestControllerAdvice ExceptionHandler 来捕获我的 Spring 启动应用程序抛出的异常。在捕获我的 ExceptionHandler returns 作为响应来自抛出的异常的消息之后。但是我仍然从 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();
}
这与应用程序有关属性 spring.mvc.log-resolved-exception
。这在 spring-boot
中默认设置为 false,但如果您使用 spring-boot-devtools
,则它会切换为 true。
所以在那种情况下,您必须声明 spring.mvc.log-resolved-exception = false
异常处理程序解析器停止写入有关异常的警告。
我无法理解为什么 ExceptionHandlerExceptionResolver 抛出异常。 我写了一个自定义 @RestControllerAdvice ExceptionHandler 来捕获我的 Spring 启动应用程序抛出的异常。在捕获我的 ExceptionHandler returns 作为响应来自抛出的异常的消息之后。但是我仍然从 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();
}
这与应用程序有关属性 spring.mvc.log-resolved-exception
。这在 spring-boot
中默认设置为 false,但如果您使用 spring-boot-devtools
,则它会切换为 true。
所以在那种情况下,您必须声明 spring.mvc.log-resolved-exception = false
异常处理程序解析器停止写入有关异常的警告。