SonarQube,finally块中的跳转语句(squid:S1143)

时间:2017-02-27 15:08:41

标签: java sonarqube try-catch-finally sonarlint false-positive

我知道,不应该使用finally块中的跳转语句。在这个简单的例子中,突破'用于打破'开关'。 SonarQube(5.6.3)用 sonar-java 4.5.0.8398报告了一个问题:

"跳转语句不应出现在"最后"块(鱿鱼:S1143)"

public static void breakInFinallyIssue(){
    int a = 0;
    try{
        a = 1 / 0;
    }catch(Exception x){
        System.out.println("div by zero");
    }
    finally{
        switch (a) {
        case 0:
            //do something
            break;
        default:
            break;
        }
        //do something more
    }
}

这是一个已知的FP / bug吗?

1 个答案:

答案 0 :(得分:2)

你是对的,这是误报。然而,这种复杂的逻辑并不属于finally块,并且如果可能的话应该被提取为适当命名的清理方法。这不仅会关闭警告,还会提高代码的可读性。