我知道,不应该使用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吗?
答案 0 :(得分:2)
你是对的,这是误报。然而,这种复杂的逻辑并不属于finally块,并且如果可能的话应该被提取为适当命名的清理方法。这不仅会关闭警告,还会提高代码的可读性。