Java 使用ControllerAdvice的Spring Boot REST自定义异常未显示在日志或标准输出中
在一个使用Java1.8、lombok和SpringBoot2.1.5.RELEASE的项目中,创建了一个自定义异常,它不会显示在我的日志文件或标准输出中的任何地方Java 使用ControllerAdvice的Spring Boot REST自定义异常未显示在日志或标准输出中,java,spring,spring-boot,exception,controller-advice,Java,Spring,Spring Boot,Exception,Controller Advice,在一个使用Java1.8、lombok和SpringBoot2.1.5.RELEASE的项目中,创建了一个自定义异常,它不会显示在我的日志文件或标准输出中的任何地方 pom.xml: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <versio
pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
控制器建议:
@Slf4j
@ControllerAdvice(annotations = RestController.class)
public class ProductControllerAdvice {
@ExceptionHandler(ProductNotFoundException.class)
@ResponseStatus(value= HttpStatus.NOT_FOUND)
public void handleProductNotFoundException() {
log.error("\n\n\tProductNotFoundException handler executed\n");
}
}
当我到达REST端点时:
http://localhost:8080/products/0
它返回一个HTTP404,它应该返回
但是我在logs.log(使用grep-rnw logs.log-e'ERROR'
)文件和/或stdout中的任何地方都没有看到错误
另外,尝试使用ProductNoteException扩展RuntimeException
,但仍然无法正常工作
我可能做错了什么?控制器似乎没有抛出异常。@stringy05-您看不到我在
getProductById()
的方法签名后放置了抛出IOException、ProductNotFoundException
?这可能没有帮助,但它对我来说是有效的,使用您的类时保持不变。我需要在grep命令中添加-5,以便在错误发生后输出消息。抛出
只是告诉编译器该方法抛出该类异常,代码需要实际抛出才能触发异常处理程序。而不是返回新的ResponseEntity(HttpStatus.NOT_FOUND)
您可以使用抛出新的ProductNotFoundException()代码>,将触发异常处理程序
@Slf4j
@ControllerAdvice(annotations = RestController.class)
public class ProductControllerAdvice {
@ExceptionHandler(ProductNotFoundException.class)
@ResponseStatus(value= HttpStatus.NOT_FOUND)
public void handleProductNotFoundException() {
log.error("\n\n\tProductNotFoundException handler executed\n");
}
}
http://localhost:8080/products/0