Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ResponsEentityExceptionHandler:未截获handleMethodArgumentNotValid

ResponsEentityExceptionHandler:未截获handleMethodArgumentNotValid
EN

Stack Overflow用户
提问于 2016-11-18 06:12:33
回答 3查看 5.7K关注 0票数 1

我的控制器有以下方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void save(@RequestBody @Valid final User resource) {
    createInternal(resource);
}

由于资源参数前有@Valid,因此当我将NULL传入实体的@列上的nullable=false时,我希望它会被下面的异常处理程序截获。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
protected final ResponseEntity<Object> handleMethodArgumentNotValid(final MethodArgumentNotValidException e,                                     
                                                                    final HttpHeaders headers, 
                                                                    final HttpStatus status, 
                                                                    final WebRequest request) {
    log.info("Bad Request: {}", ex.getMessage());
    log.debug("Bad Request: ", ex);

    ...

    return handleExceptionInternal(e, dto, headers, HttpStatus.BAD_REQUEST, request);
}

但看起来我只能这样处理了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ExceptionHandler(value = { ConstraintViolationException.class,  
                            DataIntegrityViolationException.class })
public final ResponseEntity<Object> handleBadRequest(final RuntimeException e,
                                                     final WebRequest request) {
    ...
    return handleExceptionInternal(ex, apiError, new HttpHeaders(), HttpStatus.BAD_REQUEST, request);
}

为什么handleMethodArgumentNotValid异常处理程序没有像它应该的那样处理它呢?

EN

回答 3

Stack Overflow用户

发布于 2016-11-18 06:47:02

在您的“handleMethodArgumentNotValid”有机会触发之前,DefaultHandlerExceptionResolver会处理此事件

或者,如果要处理声明,则使用@ExceptionHandler(MethodArgumentNotValidException.class)

@RequestBody方法参数可以用@Valid注解,在这种情况下,它将使用配置的Validator实例进行验证。在使用MVC名称空间或MVC Java配置时,假设类路径上有JSR-303实现,则会自动配置JSR-303验证器。

就像@ModelAttribute参数一样,可以使用错误参数来检查错误。如果未声明这样的参数,则将引发MethodArgumentNotValidException。异常在DefaultHandlerExceptionResolver中处理,它将一个400错误发送回客户端。在你的“handleMethodArgumentNotValid”有机会触发之前,这是handndf

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestbody

票数 1
EN

Stack Overflow用户

发布于 2016-11-18 06:45:14

为什么handleMethodArgumentNotValid异常处理程序没有像它应该的那样处理它?

Spring容器(在启动期间)扫描所有用@RequestMapping@ExceptionHandler注释的控制器方法。

稍后,当请求带有url时,将使用handlermapping标识控制器方法,然后注入所有必需的依赖项(控制器方法参数),如ModelHttpRequest等。并委托调用控制器方法来服务输入请求。

由于您的handleMethodArgumentNotValid没有使用@RequestMapping@ExceptionHandler进行注释,Spring容器无法识别此方法。

票数 -1
EN

Stack Overflow用户

发布于 2019-06-26 10:43:21

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ExceptionHandler({ ConstraintViolationException.class })
public ResponseEntity<> handleConstraintViolation(ConstraintViolationException ex, 
    WebRequest request) {
    // error handeling

    return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
}

有关更多细节,请访问https://www.baeldung.com/global-error-handler-in-a-spring-rest-api

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40670447

复制
相关文章
[系统安全] 四十.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法
该系列文章将系统整理和深入学习系统安全、逆向分析和恶意代码检测,文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。漫漫长征路,偏向虎山行。享受过程,一起加油~
Eastmount
2023/02/28
8.9K0
[系统安全] 四十.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法
利用powershell 生成sqlserver 对象脚本
首先,创建一个server 对象实例,然后连接它。我只需要引入Script() 方法,脚本如下:
用户1217611
2022/05/06
9170
使用管道符在PowerShell中进行各种数据操作
最近在培训PowerShell,在讲到Pipeline的时候,对于我这种长期和数据(数据库)打交道的人来说,觉得很实用,所以写此博文,记录一下。
深蓝studyzy
2022/06/16
2.3K0
关于go的只读管道只写管道以及单向管道的理解
上面的例子,writeChan只能对ch变量进行写操作,readChan只能对ch变量进行读操作,这样造成很多同学对管道理解就有了只读和只写管道了,其实管道都是双向的,默认双向可读写,只是管道在函数参数传递时可以使用操作符限制管道的读写,就如上面的例子。
公众号-利志分享
2022/04/25
1K0
PowerShell系列(七)PowerShell当中的Provider介绍
今天给大家讲解PowerShell当中的非常重要的概念Provider相关的知识,希望对大家能有所帮助!
小明互联网技术分享社区
2023/09/26
3920
PowerShell系列(七)PowerShell当中的Provider介绍
图片加载失败的正确处理[通俗易懂]
对于这样一段代码来讲,如果该图片加载成功,那么界面上会显示图片,如果由于一些原因导致图片加载失败,会出现这样的图标。
全栈程序员站长
2022/08/23
2.4K0
图片加载失败的正确处理[通俗易懂]
Flutter SDK变更后的正确处理方式
网上有些方法用了未必有效。比如有说直接修改项目中的.packages文件,改完后可能还会有问题。
IT晴天
2020/02/18
2.3K0
Node中POST请求的正确处理方式
Node的 http 模块只对HTTP报文的头部进行了解析,然后触发 request 事件。如果请求中还带有内容部分(如 POST 请求,它具有报头和内容),内容部分需要用户自行接收和解析。
Qiang
2019/06/20
2K0
Node中POST请求的正确处理方式
在 JavaScript 正确处理变量
变量无处不在。即便我们写一个小函数或一个小工具,也要声明、赋值和读取变量。增强对变量的重视,可以提高代码的可读性和可维护性。
疯狂的技术宅
2020/12/31
6110
PowerShell系列(二):PowerShell和Python之间的差异介绍
今天给大家聊聊PowerShell和Python之间有哪些共同之处,各自有哪些优势,希望对运维的朋友了解两种语言能提供一些有用的信息。
小明互联网技术分享社区
2023/09/20
6270
PowerShell系列(二):PowerShell和Python之间的差异介绍
前端正确处理“文字溢出”的思路
然而当用户缩放浏览器显示的尺寸时,我们需要做到省略中间的文字,选择保留后缀这种方案。如下图所示:
@超人
2023/05/12
7630
前端正确处理“文字溢出”的思路
PowerShell的开源实现
从Mono老大的blog上Open Source Powershell Implementation 看到了一个PowerShell的开源实现的项目Pash。目前可以运行的平台包括Linux, Mac
张善友
2018/01/31
6900
PowerShell的开源实现
正确处理 CSV 文件的引号和逗号
CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便。
仁扬
2023/07/02
1.2K0
Powershell中的变量
在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。
QRosie
2019/11/24
3K0
Powershell中的变量
PowerShell系列(三):PowerShell发展历程梳理
Windows Server 2003 SP1/SP2,Windows Server2003 R2, Windows XP SP2, and Windows Vista
小明互联网技术分享社区
2023/09/21
4610
PowerShell系列(三):PowerShell发展历程梳理
PowerShell revshells
PowerShell revshells 在提示符和工作目录上方显示 username@computer 有部分 AMSI-bypass,使一些事情更容易 TCP 和 UDP Windows Powershell 和核心 Powershell 上传和下载文件的功能。(使用sc0tfree的 Updog) ngrok 支持 ngrok 可以从脚本内部启动/停止 有效载荷将与 ngrok 地址一起生成 更新支持 您可以从脚本内部启动/停止 Updog PowerShell revshells 嵌入了上传/下
Khan安全团队
2023/02/23
1.4K0
PowerShell revshells
Redis的管道Pipeline
文章目录 1. Redis的管道(Pipeline) 1.1. 为什么使用管道 1.2. 客户端使用管道执行命令 1.2.1. API Redis的管道(Pipeline) 为什么使用管道 其中redis的执行一条命令可以分为四个步骤 发送命令 命令排队 命令执行 返回结果 其中1-4之间所需要的时间称为往返时间(RTT) Redis提供了批量操作命令(例如mget、mset等),有效地节约RTT。但 大部分命令是不支持批量操作的,例如要执行n次hgetall命令,并没有 mhgetall命令存在,需要
爱撒谎的男孩
2019/12/31
1.6K0
Shell中的管道
管道 管道,从一头进去,从另一头出来。 在Shell中,管道将一个程序的标准输出作为另一个程序的标准输入,就像用一根管子将一个程序的输出连接到另一个程序的输入一样。 管道的符号是|,下面的程序将cat的标准输出作为less的标准输入,以实现翻页的功能: $ cat source.list.bk | less tee 有时候我们想要同时将程序的输出显示在屏幕上(或进入管道)和保存到文件中,这个时候可以使用tee。 tee程序的输出和它的输入一样,但是会将输入内容额外的保存到文件中: $ cat hello.t
mwangblog
2018/07/04
9100
Dart 编码规范:正确处理 null
在 Dart 编码中,我们会经常遇到需要处理 null 的场合。Dart 2.12版本引入 null safety 以后,对 null 的处理有了新的规范。关于 null safety 特性,可以阅读本人的另一篇文章:升级踩坑,聊聊 Dart 的 null safety,本篇介绍如何正确处理 null。
玖柒的小窝
2021/11/21
1.3K0
Dart 编码规范:正确处理 null
Windows PowerShell:(
  Cmdlets 用于服务器的管理方面主要体现在4个方面:服务、日志、进程、服务器管理器。
py3study
2020/01/07
3.1K0

相似问题

使用knex和无服务器脱机时连接获取的问题

16

onActivityResult resultCode在使用照相机时总是0

10

在lambda上,无服务器函数总是超时

22

使用无服务器在lambda上部署代码失败

20

LibGit2Sharp无响应性

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文