为什么艾玛不能完全覆盖最终的阻止?

sti*_*vlo 22 java code-coverage emma

我不明白为什么艾玛没有给"最终"块提供完整的代码覆盖.我做了一个简短的示例程序来演示这个.

当我执行程序时,它显示:

try
finally
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么最终被标记为红色(未执行)并且"finally""println"被标记为黄色(部分执行).我错过了什么吗?如何让emma了解finally块被覆盖?

例

谢谢!

aio*_*obe 16

在EMMA Faq中有一个条目:由于finally块而隐含分支.触及部分覆盖的最终块的主题.也许这有帮助.

  • @JPM原因写在aioobe提供的链接中:*编译器必须确保始终执行清理代码[finally块],无论try块中是否抛出异常.因此,有两条可能的路径通向finally块:有和没有异常待处理.* (3认同)
  • 谢谢!事实上,在try块中执行有和没有异常的代码可以完全覆盖finally块. (2认同)