当前位置: 首页 > 知识库问答 >
问题:

@NotNull何时会抛出异常?

董弘新
2023-03-14

我在其中一个POJO中使用javax.validation.constraints.NotNull,如下所示:

public class Abc {

@NotNull
private final String x;

@NotNull
private final String y;
}

然后,即使我为两个字段都使用 null 值制作 Abc 的对象,它也不会引发任何异常。知道为什么吗?

例如。

Abc abc = new Abc(null, null);

不会抛出任何异常。

共有3个答案

越新霁
2023-03-14

对于注释Spring需要类的代理的实现,因此如果您将Springbean注入到某些类并调用Spring代理注入的方法,您可以实现异常行为,这样将抛出异常,并且不要忘记您的组件应该被注释为@Validated

戴原
2023-03-14

也许类似问题的这个回答对你有帮助。

要激活参数校验,只需用@Val的注释类

问题链接

奚无尘
2023-03-14

注释只是附加到它们注释的项目上的额外信息;它们本身没有内置逻辑。如果您使用Lombok或静态编程语言等工具,编译器可能支持根据注释自动添加逻辑,但除此之外,它们不会“做任何事情”,直到您实际进行活动检查(例如,通过验证器运行POJO)。

 类似资料:
  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 我的项目使用apache超文本传输协议客户端向超文本传输协议服务器发送超文本传输协议请求。但是奇怪的事情发生了。我设置连接超时为10秒,套接字超时为10秒。对于每一天,大多数请求时间(大约100个请求)是100ms-200ms,但是左(大约10个请求)将抛出连接超时异常,这意味着连接建立时间是10s以上。我不知道发生了什么。 我的电话是: HttpUtils。post(主机,空,参数,“UTF-8

  • 我的Spring安全配置: 自定义处理程序: 异常解析器: 我的问题是spring security不会抛出任何异常。例如,当我输入一个受保护的url时,它会将我重定向到登录页面。如果我从配置中删除登录页面,它会将我重定向到spring security默认登录表单。因此,我不能处理任何异常,如AccessDeniedException。正如你在上面看到的,我已经定义了自定义的拒绝访问处理程序,它

  • 当我使用ValidationUtil.InvokeValidator验证时 2018-07-06 16:04:09.769错误10223--[nio-8080-exec-1]O.a.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常[请求处理失败;嵌套异常为java

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写

  • 该文件指出 Lambda函数可能由于以下任何原因而失败: 函数在尝试到达终结点时超时。 函数无法成功解析输入数据。 该函数会遇到资源限制,例如内存不足错误或其他超时。 我的问题:如果我使用SQS Lambda集成(.NET) 我的函数引发异常 我的SQS可见性计时器设置为15分钟,最大接收计数为1,DLQ设置 函数会重试吗?当所有重试后抛出异常时,它会放入DLQ吗?