我们正在使用SonarQube进行静态代码分析。我们面临着SonarQube发现的以下错误
NullPointerException might be thrown as 'evt' is nullable here
在以下代码中
try {
//business logic
}(Exception e){
throw new MyException("Found issue for event " + evt.getDeatil());
}
为了消除这个bug,我们引入了用于null检查的小型内联代码
try {
//business logic
}(Exception e){
throw new MyException("Found issue for event " + evt != null ?
evt.getDeatil() : null);
}
代码更改后,SonarQube仍然显示相同的违规错误。
有谁能帮我们找到我们这里缺少的东西吗?
行中有错误:
throw new MyException("Found issue for event " + evt != null ? evt.getDeatil() : null);
问题是运算符优先<代码>在之前计算:
因此您的代码等于:
String message = "Found issue for event " + evt;
throw new MyException(message != null ? evt.getDeatil() : null);
NullPointerException仍然可能发生。另外,您引入了一个新问题-表达式:
message != null
始终计算为
true
。
要修复它,您必须添加花括号:
throw new MyException("Found issue for event " + (evt != null ? evt.getDeatil() : null));
问题内容: 请查看此表达语言 即使地图为null,也会应用样式。 所以我改为 即使这样,也正在得到应用。 如果地图是我不想应用任何样式。 有什么帮助吗?以及这种行为的原因? 问题答案: 使用(检查空性和空性)并使用括号将嵌套的三元表达式分组(EL在某些实现/版本中,即嵌套三元表达式有些问题)。因此,这样: 如果仍然徒劳(我将检查JBoss EL配置),请使用“常规” EL方法: 更新 :根据评论,
问题内容: 在Xcode中编译项目时出现错误,它说: 表达过于复杂,无法在合理的时间内解决;考虑将表达式分解为不同的子表达式 这是代码: 问题答案: 为什么不通过将表达式分解为两个子表达式来降低编译器的复杂性? 您也可以使用(或更多的“ Swifty” 或)来提高可读性。如果我记得,它是标头中定义的无符号32位Integer最大值的十六进制值。
问题内容: 尝试在模板中合并多个值时遇到问题。根据Thymeleaf的说法,我应该可以将它们+一起组合在一起… 4.6合并文本 文本,无论它们是文字还是评估变量或消息表达式的结果,都可以使用+运算符轻松连接: 这是我发现有效的示例: 但是,这不是: 从逻辑上讲,这应该可以,但是不能,我在做什么错? Maven: 这是我设置TemplateEngine和TemplateResolver的方法: Th
问题内容: 我需要在这些公式中为书籍[i]创建一个空检查,并且我不完全确定如何进行此操作,因为我对空检查并不十分熟悉,并且在编程方面还很陌生。任何帮助都将不胜感激! 问题答案: 首先,您应该检查自身是否不为null,然后简单地检查是否:
检查d1是否正确的最佳方法是什么。getDept()和d2。在进行比较之前,getDept()在以下lambda中是否为null?空检查应该在集合之前完成吗。sort()还是可以在lambda语句中完成? 我需要确保在尝试按部门排序之前,每个对象的部门数据不为空。
本文向大家介绍thinkPHP的表达式查询用法详解,包括了thinkPHP的表达式查询用法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP的表达式查询。分享给大家供大家参考,具体如下: ThinkPHP 表达式 这里说的表达式,是指 ThinkPHP 框架中特有的表达式。这些表达式用于查询或更新删除等操作的 where条件 及模板标签中。 Where 条件中使用表达式