finally 블록의 jump 문을 사용하면 안됩니다. 이 간단한 예에서 'break'는 'switch'를 깨는 데 사용됩니다. 수중 음파 탐지기 - 자바와 SonarQube (5.6.3) 4.5.0.8398 보고서에 문제가 :SonarQube, finally 블록의 점프 문 (squid : S1143)
"블록 (오징어 : 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/버그?
'finally'는 정리를위한 것입니다. 네가 거기에 너무 많이 나가는 것 같아. –
답변 해 주셔서 감사합니다. 때로는 청소하는 것이 많습니다. 수중 음파 탐지기의 심층 분석을 위해 코드가 복잡해 졌다고 생각하십니까? 그러면 버그 일 수 있습니다. 이 작은 예조차도 음파 탐지기가 문제를보고하게합니다. finally 블록에서 'break'가 발생하더라도 블록 외부로 점프하지 않아도 문제가 발생하는 것으로 보입니다. – Tester
'finally'블록에서 'switch'가 존재한다고 생각하면 쉽게 버그를 만들 수있는 코드 냄새가 있다고 생각합니다. 반드시 버그입니까? 아뇨,하지만 왜 그걸 필요로합니까? –