[英]Better way to check for null in Java
我正在从涉及这样的数据库事务的服务中检查空值
if(!id.matches("-?\\d+(\\.\\d+)?") || contactService.getContact(id) == null){
throw new ResourceNotFoundException();
}
Contact contact = contactService.getContact(id);
但是通过这种方式,我要两次调用getContact服务,这对于应用程序来说是开销,这是检查空值的更好方法,因此我只需要调用一次服务即可。
if
两次
if(!id.matches("-?\\d+(\\.\\d+)?")){
throw new ResourceNotFoundException();
}
Contact contact = contactService.getContact(id);
if(contact == null){
throw new ResourceNotFoundException();
}
Contact contact;
if(!id.matches("-?\\d+(\\.\\d+)?") || (contact = contactService.getContact(id)) == null){
throw new ResourceNotFoundException();
}
不过,最好是,如果ID与批准的格式不匹配,则应该抛出IllegalArgumentException
,这是因为与没有有效ID的条目相比,这是一个不同的错误),并且应该使用Pattern.compile
将该模式保存为常量字段,而不是(1)在每次调用时重新编译它,以及(2)将其隐藏为颂歌内部的魔术常数。
关于什么
Contact contact = contactService.getContact(id);
if(!id.matches("-?\\d+(\\.\\d+)?") || contact == null){
throw new ResourceNotFoundException();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.