有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

调试如何处理java中“死存储到局部变量”的错误?

我写了一个简单的测试代码。它是一个圆。我想大多数人都可以想象什么是圆形类,所以我不会粘贴它

在测试代码中,我尝试使用无效点测试circle构造函数,并假设抛出异常。但是一个错误发生了。我在网上查了一下,但还是不知道怎么解决这个问题。有人能帮我吗?谢谢

代码信息,bug在下面代码的最后一句中

/**
 * Tests that the Circle constructor throws an exception for center Point. 
 */
@Test (expected = IllegalArgumentException.class)
public void testIllegalCenter() {
  //Instantiates a circle with an incorrect center point.
    @SuppressWarnings("unused")
    final Circle testCircle = new Circle(VALID_RADIUS, INVALID_POINT, VALID_COLOR);
}

错误报告

错误:CircleTest中testCircle的死存储。睾丸发育中心()

此指令为局部变量赋值,但该值不会在任何后续指令中读取或使用。通常,这表示错误,因为从未使用计算的值

请注意,Sun的javac编译器经常为最终的局部变量生成死存储。因为FindBugs是一个基于字节码的工具,所以没有简单的方法来消除这些误报


共 (1) 个答案

  1. # 1 楼答案

    只需删除变量并按如下方式调用构造函数:

    @Test (expected = IllegalArgumentException.class)
    public void testIllegalCenter() {
        new Circle(VALID_RADIUS, INVALID_POINT, VALID_COLOR);
    }