问题标签 [controller-advice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
50 浏览

mysql - 自定义 - ConstraintViolationException - SQL 异常

我有一个自定义建议来处理从REST API 错误处理复制的控制器的异常以及处理 DataIntegrityViolationException 的方法:

ApiError - 构造函数

发生错误时,响应会显示如下消息:

问题是消息没有向消费者显示真正的问题,因为真正的问题在 ( ex.getCause().getCause().getMessage()) 内部:

我想处理这样的消息:“记录仍然有来自其他表的引用”;

是否有任何自定义处理程序异常可以以更具体的方式处理 sql 异常?

0 投票
0 回答
14 浏览

spring-boot - servlet [dispatcherServlet] 在路径 [/api] 的上下文中的 Servlet.service() 引发异常 java.lang.IllegalArgumentException

为什么在 @ControllerAdvice 带注释的类中没有处理像上面这样的异常

0 投票
1 回答
41 浏览

java - Java Spring ExceptionHandler 控制器语法和良好实践

我想在 Spring 中正确处理我的异常,所以我有一个关于 exceptionHandler 语法的问题:如果它们被异常处理程序捕获,是否可以在控制器中抛出特定异常?

进一步来说 :

这是例外:

这是具有 UnknownUserException 特定方法的 ExceptionHandler :

下面是一个可能引发该异常的映射示例:

userService.findById(id) 可能会抛出 UnknownUserException。

据我了解,如果服务引发特定异常,controllerAdvice 会“覆盖”控制器,但是,我应该如何处理我的控制器?我应该再次抛出异常(如上)还是捕获特定异常并返回 ResponseEntity(HttpStatus.NOT_FOUND) ?

0 投票
1 回答
162 浏览

java - spring boot @ExceptionHandler 没有捕捉到@Aspect 类中抛出的异常

我有一个方面类,它使用通用方法记录方法之前和之后(前后)的执行:

在该testException()方法中,我抛出了在 logMethod 中捕获的 Throwable Exception,并抛出自定义异常而不是类型LoggingAspectThrowableException()

在我的控制器建议中,我有这个:

ErrorMessage 类是我用来向客户端返回格式正确的错误消息的自定义消息:

调用控制器方法后,正如预期的那样,异常在我的 testException() 方法中引发,但 @ControllerAdvice 无法解释它以返回自定义消息。

邮递员回复: 在此处输入图像描述

项目结构:

在此处输入图像描述

安慰:

0 投票
0 回答
106 浏览

java - 在 ControllerAdvice 中捕获 ValidationException 而不是自定义异常

我试图在我使用这样的注释构建的自定义验证器中引发异常:

ValidExtractionDate注释:

提取日期验证器:

正如您在上面看到的,当 localDate 无效时会引发 InvalidExtractionDateException 类型的异常:

无效提取日期异常:

在我的 ControllerAdvice 里面我有这个:

不幸的是,在抛出异常之后,AdviceController正在调用globalExceptionHandler()方法而不是invalidExtractionDateException()方法。

这是我在控制台上得到的:

0 投票
0 回答
107 浏览

java - 警告 .mmaExceptionHandlerExceptionResolver:我的 Spring Boot 应用程序中的 @ExceptionHandler 失败

我试图了解为什么会从我的一般异常处理程序方法中收到此警告。

我正在运行 SpringBoot 版本2.6.1。并使用@ControllerAdvice 全局处理异常。

这是一般的异常处理方法:

日志消息

0 投票
0 回答
33 浏览

spring-boot - Spring Boot 从 Controller Advice 获取请求正文导致空字符串

我正在开发一个弹簧启动应用程序。我想保存 Unexpected(500 Internal server errors) 以便轻松获取错误元数据。所以 :

1-我为意外情况添加了一个异常处理程序。

2- 我添加了过滤器以便能够多次阅读内容。

3-最后我试图从中获取请求正文HttpServletRequest并获取空正文。

我检查了我在上面第 2 项中共享的doFilterInternal方法。在调试模式下,我在第 3 项运行相同的代码,我得到了请求正文。但我不能从控制器的建议中得到。我该如何解决这个问题?

0 投票
1 回答
55 浏览

java - 如果springboot中的路径参数不是Long,如何抛出NoHandlerFoundException

目前,有一个 GetMapping 如下

现在如果有人访问 http://localhost:8080/api/animal/1,它会返回动物。

但是如果有人在没有 Long 变量作为路径参数的情况下访问此端点,我需要抛出 NoHandlerFoundException,这意味着像这样 http://localhost:8080/api/animal/asdsad

如果有人能告诉我实现这一目标的方法,那将不胜感激

我也有如下全局异常处理

}

0 投票
3 回答
114 浏览

java - Spring Boot:RestControllerAdvice:处理包装的异常

假设我们有这样的@RestControllerAdvice-annotated 类:

对于已知的WrapperException,是否有可能以某种方式重新调度包装的异常?

我尝试了几件事,例如重新抛出包装的 excption 或显式调用我们的 ErrorController 的自定义方法并在那里重新抛出异常,但到目前为止没有运气。

0 投票
1 回答
93 浏览

java - Spring Boot 404:未捕获控制器建议中未发现异常的处理程序

因此,当用户尝试调用我的应用程序未知的 url 时,我试图发送自定义答案。为此,我首先添加到我的application.properties(在主文件夹和测试文件夹中)

因此,如果没有找到处理程序,则会引发异常。此异常应为NoHandlerFoundException类型

然后我在我的控制器建议中添加了一个自定义异常处理程序我的控制器建议(简化)

使用它,在我的测试中使用以下方法调用未知 url 时:

我进入调试控制台: o.s.web.servlet.PageNotFound : No mapping for GET /ttt 虽然,答案没有我的自定义错误消息,因为我也进入调试控制台:

然后我尝试了

但随后出现非法状态异常:Failed to load application context is throwed with cause

IllegalStateException:Ambiguous @ExceptionHandler method mapped for [class org.framework.web.servlet.NoHandlerFoundException]

另外,当我在我的处理程序中放置断点并调试我的测试时,执行永远不会在任何断点处停止。