当前位置: 首页 > 知识库问答 >
问题:

如何告诉声纳一个有管理的无限循环

拓拔弘化
2023-03-14

我有一个如下的Java代码

try {
    while (true) {
        // do something without break but will throw an expected
        // exception in some random iteration of the loop
    }
} catch (Exception e) {
    // handled properly
}

Sonar报告这是一个Blocker Bug,描述如这里所述。我如何摆脱这个,因为我实际上期望我的循环被异常结束,因此不需要中断。

共有1个答案

施景同
2023-03-14

对控制流使用异常通常不被认为是好的编码实践。原因可以在这里找到。

如果您仍然希望此操作有效,则可以执行以下操作:

while(true) {
    try {
        //code...
    } catch (Exception e) {
        //code...
        break;            
    }
}

循环中的中断应该使其工作。

 类似资料:
  • 我用两种方法对一个项目进行了声纳分析 > 作为maven的目标,使用(Java1.8)和(java 1.6) 两次扫描都产生了两份不同的报告。我不知道为什么会这样。 下面是我的开发环境配置 Maven: 3.0.5声纳方块: 3.0.1声纳转轮: 2.4日食:开普勒Java: 1.6

  • 然后,在我的测试中,我执行调用的代码。而测试就是在那条线上失败了。我做错了什么?

  • 我正在尝试做一个数字猜测游戏,如果用户匹配他们赢得现金的幸运数字,游戏将继续进行,直到他们用完现金。他们每打一轮都要付赌注。每一轮都会产生一个新的随机数。 我只想使用一个输入。当我把输入放在循环中,循环无限停止循环,当我把它放在循环外,它无限开始循环。我该怎么阻止这一切?我需要向while循环添加什么?我尝试突破,但我想继续比赛,直到钱用完。 我只想使用一个输入,但是当我把输入带出循环(lucky

  • 我知道这似乎是一个容易的解决办法,但我有麻烦了。我有一个,选中该复选框后,我将删除上的数据源,并删除一些的属性。 我已经调查过这些: CheckBox_Checked事件 有没有更简单的方法来处理复选框? 最终代码(非常简单):

  • 问题内容: 如何声明i和j使其成为无限循环? //这是我遇到的面试问题。 它在询问i和j的声明是什么,使其始终为真。 我无法通过将i和j声明为数字类型来说明这一点。还有什么其他类型可以满足呢? 问题答案: ,并且会自动为和取消装箱为ints ,而不会为。和是不同的实例,但具有相同的int值。这就是为什么所有三个比较都将返回true的原因。

  • 问题内容: 尽管我知道问这个问题会有点愚蠢,但我仍然想查询有关它的技术观点的更多信息。 无限循环的简单示例: 如何从此类外部中断(停止)此无限循环(例如,在继承的帮助下)? 问题答案: 即使写这篇文章我也觉得很脏,但是… 从不同的线程,你可以调用一个实现,抛出一个当你调用。