作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通过使用 EMMA,我注意到它无法正确检测,导致类被破坏。下面是一个突出显示这个问题的简单示例。
public void showProblem() {
try {
for (int i = 0; i > 10; i++) {
System.out.println(i);
}
} catch (final Throwable e) {
System.err.println(e);
}
}
public void showProblem()
{
boolean[][] tmp3_0 = $VRc; if (tmp3_0 == null) tmp3_0; boolean[] arrayOfBoolean = $VRi()[1]; int i = 0; arrayOfBoolean[0] = true; tmpTernaryOp = tmp3_0;
try
{
do
{
Throwable e;
System.out.println(e);
e++; arrayOfBoolean[1] = true; arrayOfBoolean[2] = true; } while (e > 10); arrayOfBoolean[3] = true;
}
catch (Throwable localThrowable1)
{
System.err.println(localThrowable1); arrayOfBoolean[4] = true;
}
arrayOfBoolean[5] = true;
}
请注意,它正在尝试增加 Throwable
类型的 e
并在 while
循环中使用它。
我发现通过在 for 循环中移动 try catch 逻辑可以解决这个问题。正如下面代码中突出显示的那样。
public void showProblem() {
for (int i = 0; i > 10; i++) {
try {
System.out.println(i);
} catch (final Throwable e) {
System.err.println(e);
}
}
}
public void showProblem()
{
boolean[][] tmp3_0 = $VRc; if (tmp3_0 == null) tmp3_0; boolean[] arrayOfBoolean = $VRi()[1]; int i = 0;
Throwable e;
arrayOfBoolean[0] = true; tmpTernaryOp = tmp3_0;
do {
try { System.out.println(i); arrayOfBoolean[1] = true;
} catch (Throwable localThrowable1) {
System.err.println(localThrowable1); arrayOfBoolean[2] = true;
}
i++; arrayOfBoolean[3] = true; arrayOfBoolean[4] = true; } while (i > 10);
arrayOfBoolean[5] = true;
}
还有其他人遇到过这些问题吗?
事实证明,问题与 Eclipse 构建到类中的调试信息有关。当使用 Android 生成的 ant 脚本执行 javac 时观察到这一点,并且类似地导致了问题。禁用此功能使 EMMA 能够成功处理类文件。
我希望这些信息对其他人有帮助。
最佳答案
我在 Windows XP 下使用 Java JRE 1.6.0_35 和 EMMA 2.0.5312 进行了测试,没有任何问题。对我来说,反编译代码(使用 JAD)如下所示:
public void showProblem()
{
boolean aflag[] = ($VRc != null ? $VRc : $VRi())[2];
try
{
int i = 0;
aflag[0] = true;
do
{
aflag[2] = true;
if (i > 10)
{
System.out.println(i);
i++;
aflag[1] = true;
} else
{
break;
}
} while (true);
aflag[3] = true;
}
catch (Throwable throwable)
{
System.err.println(throwable);
aflag[4] = true;
}
aflag[5] = true;
}
P.S.:我认为在您的代码示例中您实际上想使用 i < 10
在 for
循环,而不是i > 10
,不是吗? ;-) 不管怎样,我使用你的代码只是为了确保重现你的情况。
关于java - 艾玛(Emma)错误地仪表化了类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084851/
通过使用 EMMA,我注意到它无法正确检测,导致类被破坏。下面是一个突出显示这个问题的简单示例。 public void showProblem() { try { for (
我是一名优秀的程序员,十分优秀!