SonarQube,finally 块中的跳转语句(鱿鱼:S1143)
SonarQube, jump statements in finally block (squid:S1143)
我知道,finally 块中的跳转语句不应该使用。在这个简单的示例中,'break' 用于中断 'switch'。 SonarQube (5.6.3) 与
sonar-java 4.5.0.8398 报告一个问题:
"Jump statements should not occur in "终于“块(鱿鱼: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 吗?
你是对的,这是误报。然而,这种复杂的逻辑不属于 finally 块,如果可能,应该提取到恰当命名的清理方法。这不仅会关闭警告,还会提高代码的可读性。
我知道,finally 块中的跳转语句不应该使用。在这个简单的示例中,'break' 用于中断 'switch'。 SonarQube (5.6.3) 与 sonar-java 4.5.0.8398 报告一个问题:
"Jump statements should not occur in "终于“块(鱿鱼: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 吗?
你是对的,这是误报。然而,这种复杂的逻辑不属于 finally 块,如果可能,应该提取到恰当命名的清理方法。这不仅会关闭警告,还会提高代码的可读性。