- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要读取属性文件。我为此目的使用 BufferedReader 和 FileReader。我在 try 部分之前将 BufferedReader 初始化为 null,并在 try 部分中进行初始化。最后,我要关闭读者。此时,我收到标题中提到的错误。
完整代码如下
public void getPageTitleProperties() throws IOException
{
BufferedReader br = null;
String lhs, rhs;
try
{
br = new BufferedReader(new FileReader("res" + File.separator + "pagetitle.properties"));
String line;
while ((line = br.readLine()) != null)
{
String [] keyvalue = line.split("=");
lhs = keyvalue[0];
rhs = keyvalue[1];
expectedTitles.put(lhs, rhs);
}
}
catch (RuntimeException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
br.close();
}
System.out.println("Expected URLs and Titles");
for (String url : expectedTitles.keySet())
{
System.out.println(url + ":" + expectedTitles.get(url));
}
}
错误详细信息是 -
如何消除这个错误?我尝试将 BR 初始化为非空,在 try block 中初始化它(这不起作用,因为变量无法在 finally block 中解析:))。在一些类似的帖子中,人们提到这可能是误报。我还提到了 - http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF ,但不知道如何消除该错误。
最佳答案
How can I get rid of this error?
问题是,如果 BufferedReader
或 FileReader
构造函数抛出异常,br
将为 null,但您仍然无条件调用 br.close()
。在finally block 中关闭br
之前检查它是否为null:
finally {
if (br != null) {
br.close();
}
}
或者,在 try
block 之前分配它:
BufferedReader br = new BufferedReader(...);
try {
...
} catch (...) {
...
} finally {
br.close(); // br will definitely not be null
}
或者在 Java 7 中更好,使用 try-with-resources 语句:
try (BufferedReader br = new BufferedReader(...)) {
...
} catch (...) {
...
}
请注意,当前您的 catch
block 正在转储错误,但随后会继续执行,就好像什么也没发生一样 - 而我期望将异常传播到调用者。如果无法读取文件,您希望发生什么情况? (通过我建议的第二个和第三个更改,您仍然会在实际阅读时吞下异常,但在打开文件时不会。)
关于java - Findbugs 错误 - Bug : br is null guaranteed to be dereferenced on exception path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20488226/
我正在使用一个库 - HtmlUnit - 并且我刚刚从版本 2.4 更新到版本 2.5。当我针对 2.5 编译代码时,我收到一条我不熟悉的奇怪对象“无法取消引用”错误消息。此外,我不明白为什么当我用
我有 C 和 C++ 背景,一直认为 Java 中的解引用是通过对象的引用访问对象的过程。 例如“ref”是一个引用,当用于访问它所引用的Integer对象时,它被解引用: Integer r
这个问题已经有答案了: int cannot be dereferenced (3 个回答) 已关闭 9 年前。 我正在编写一个简单的 Java 程序来进行温度转换,并且在第 8 行(我已在下面的代码
请在说明中包含一个示例。 最佳答案 回顾基本术语 通常情况下就足够了 - 除非您正在编写程序集 - 设想一个 指针包含一个数字内存地址,其中 1 表示进程内存中的第二个字节,2 表示第三个字节,3 表
本题将从草稿N1570中获取信息,所以基本上是C11。 通俗地说,取消引用指针意味着将一元 * 运算符应用于指针。草稿文件中只有一处存在“取消引用”一词(没有“取消引用”的实例),并且位于脚注中: 1
我有这三个文件。使用结构体、函数和指针。 尝试这样做: void getName(Name *) - 接收指向名称的指针并执行操作 联系人.h struct Name { char firstNam
好的,所以我需要生成 7 个 1 到 100 之间的随机数,并将最大值打印在屏幕上。但是,当我编译此代码时: public class ArrayofTemperatures { public
我喜欢代码让我头疼的时候。除了这个。我只是使用一种常用的算法用随机 double 填充一个 vector 。问题是,在编译之后,它给了我一个“Iterator not dereferenceable”
我有 C 和 C++ 背景,一直认为 Java 中的解引用是通过对象的引用访问对象的过程。 例如“ref”是一个引用,当用于访问它所引用的Integer对象时,它被解引用: Integer r
本题将从草稿中抽取信息N1570 ,所以 C11 基本上。 通俗地说,取消引用指针意味着将一元 * 运算符应用于指针。文档草案中只有一个地方存在“取消引用”一词(没有“取消引用”的实例),并且在脚注中
我正在尝试实现一个提供 map 标记动画的库,但是当我尝试添加一些高级方法时,它在第二个“.withFillColor(Color.BLUE)”上抛出一个错误,其中显示:错误: void 无法取消引用
我收到以下代码的“int 无法取消引用”错误。任何帮助表示赞赏。谢谢: public int value() { int total = 0; **for (int i = 0; i < wallet
编译时我似乎收到“错误:int 无法取消引用”错误。我已经查找了发生这种情况的原因,尽管如此,我不确定如何解决它。 public class NetID_BaseballPitcher { S
这是我遇到问题的地方。 double num1 = Math.random(); double num2 = Math.random(); if (num1 < num2.nu
所以,我花了一些时间编写一些计算方法,以便在我正在尝试制作的角色扮演游戏的预览战斗窗口中获取一些导入数字(有人还记得《火焰纹章》吗?这是它的简化版本)。这是我尝试从这些 c 形成 jtable 的地方
我问的问题非常基础,但我试图通过在编译器中做练习来理解 C++ 中指针的行为。因此,例如,我首先声明一个 int 指针 *p 并尝试为其赋予一些值并打印它: #include using names
这里我有一些值,其中两个是整数,我不能对它们调用方法,因为它们不是引用。我该如何解决这个问题? String srcAddr, dstAddr, protocol; int srcPort, dstP
我有以下代码部分,它给出了明确的 null 取消引用。 uint64_t *var1 = NULL; char *var2 = NULL; //Alias transfer var1 = (uint6
在 C 中,是否可以为取消引用的指针定义别名/快捷方式? 即假设定义如下: void * ptr_to_my_variable = 0x2ff00000; 是否可以定义一个对应于 *ptr_to_my
假设我有这样的东西: class Collection { private: typedef std::vector >::iterator Iterator; std::vector
我是一名优秀的程序员,十分优秀!