org.sonar.l10n.java.rules.squid.S1143.html Maven / Gradle / Ivy
The newest version!
Returning from a finally
block suppresses the propagation of any unhandled Throwable
which was thrown in the try
or catch
block.
Noncompliant Code Example
public static void main(String[] args) {
try {
doSomethingWhichThrowsException();
System.out.println("OK"); // incorrect "OK" message is printed
} catch (RuntimeException e) {
System.out.println("ERROR"); // this message is not shown
}
}
public static void doSomethingWhichThrowsException() {
try {
throw new RuntimeException();
} finally {
/* ... */
return; // Non-Compliant - prevents the RuntimeException from being propagated
}
}
public static void main(String[] args) {
try {
doSomethingWhichThrowsException();
System.out.println("OK");
} catch (RuntimeException e) {
System.out.println("ERROR"); // "ERROR" is printed as expected
}
}
public static void doSomethingWhichThrowsException() {
try {
throw new RuntimeException();
} finally {
/* ... */
}
}
See
- MITRE, CWE-584 - Return Inside Finally Block
© 2015 - 2025 Weber Informatics LLC | Privacy Policy