我用Spring5反应式编写了一个自定义异常
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class AddressNotFoundException extends RuntimeException{
public AddressNotFoundException(String message) {
super(message);
}
我把这个叫做服务:
@Override
public Mono<Address> getById(String id) {
Address addressFound=repository.findById(id).block();
if(Objects.equals(addressFound, null))
throw new AddressNotFoundException("Address #"+id+" not found");
return Mono.just
(addressFound);
}
但是当我到达这个页面时,会抛出一个异常,但它不是404,而是一个空指针异常和一个错误500页面,但有正确的消息?
AddressNotFound永远不会抛出,只有Nullpointer异常,但会抛出我的自定义消息???你能帮帮我吗?
这是我的控制器:
@GetMapping("/address/{id}")
public Mono<Address> byId(@PathVariable String id) {
return addressService.getById(id);
}
谢谢
您可能有一个HandlerExceptionResolver bean,由于某种原因导致了500。请试着把它脱下来一会儿。
不要扩展RuntimeException,而要尝试只扩展泛型异常。
Spring提供了一个ControllerAdvice注释来拦截抛出的异常
@ControllerAdvice
public class ExceptionController extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = { AddressNotFoundException.class })
protected ResponseEntity<Object> handleAddressNotFoundException(Exception ex, WebRequest request) {
AddressNotFoundException notFound = (AddressNotFoundException)ex;
return handleExceptionInternal(ex, String.valueOf(notFound), new HttpHeaders(), HttpStatus.NOT_FOUND, request);
}
}
这将以404的形式将错误发送回客户端,在404中,您可以在客户端进行摘要,以通常以json字符串的形式显示给用户。可以重写exceptionstoString
方法以json的形式返回它,也可以编写一个助手方法来实现这一点。
我使用的是SpringBoot2.3。我遇到了一些例外情况。我想使用类在全局级别捕获异常。我能够捕获验证错误并返回自定义错误响应,但Spring似乎忽略了我的方法。这是我的课程: andler.java 下面是我抛出异常的方法: PhotoStorageServiceImp.java PhotoUploadController.java } 我在检索照片时遇到错误
我正试图自己解决参数问题。 我可以很容易地从NativeWebRequest获取输入参数,并将它们分派到相应的自定义@Param注释参数中。 问题是我还想在这方面做一些语法检查/验证。但如果我在“resolveArgument”中抛出异常,则会向用户显示完整的堆栈跟踪。这将是过度和不安全的。我只想向用户返回一条JSON格式的消息,以显示哪个输入参数语法有错误。
我对Java/Spring领域相当陌生,我正在尝试在我的Spring Boot应用程序中使用@ControllerAdvise。ControllerAdvision捕获异常,但不显示我的自定义响应。 下面是引发异常的RestController的快照 以下是@ControllerAdvice
我是Spring Security的新手。 我有一段代码,我检查是否在请求中传递了授权头,如果缺少,我抛出一个异常。 我的目标是在全球范围内处理所有异常,因此我使用@ControllerAdvice。 注意:我知道@ControllerAdvice对于从这个和这个抛出的控制器之外的异常不起作用,所以我也遵循了这些链接中的建议。 重新验证入口点。Java语言 这是我配置authenticationE
我是Spring Boot的新手,但在阅读了Spring Boot REST中关于异常handlig的帖子和博客几个小时之后,我决定在这里写一些关于如何处理自定义转换器抛出的异常的文章。 我开发了一个基于Spring Boot的小型REST应用程序,简单地从IntelliJ生成。示例性方法如下所示 使用、和的所有类型的处理异常,我无法捕获控制器中转换器的异常,从而将json错误响应原始字段的“st
我有一个注释表和用户表,其关系为:user- 我的其他模型没有任何问题与Has很多关系,然而,评论模型有一个问题,我尝试的每一件事(即使我使用Has很多只是为了看看它是否会有不同的错误)。 下面是注释模型。 以下是用户表: 这是评论表 最后,当我调用$comment时- 谢谢