diff --git a/docs/pages/pmd/rules/java/errorprone.md b/docs/pages/pmd/rules/java/errorprone.md index c67c746c21..946fde9752 100644 --- a/docs/pages/pmd/rules/java/errorprone.md +++ b/docs/pages/pmd/rules/java/errorprone.md @@ -2790,7 +2790,7 @@ Avoid returning from a finally block, this can discard exceptions. **This rule is defined by the following XPath expression:** ``` xpath -//FinallyStatement//ReturnStatement +//FinallyStatement//ReturnStatement except //FinallyStatement//(MethodDeclaration|LambdaExpression)//ReturnStatement ``` **Example(s):** diff --git a/pmd-java/src/main/resources/category/java/errorprone.xml b/pmd-java/src/main/resources/category/java/errorprone.xml index 93930f8694..bad84763b5 100644 --- a/pmd-java/src/main/resources/category/java/errorprone.xml +++ b/pmd-java/src/main/resources/category/java/errorprone.xml @@ -2666,8 +2666,9 @@ Avoid returning from a finally block, this can discard exceptions. 3 + - //FinallyStatement//ReturnStatement + //FinallyStatement//ReturnStatement except //FinallyStatement//(MethodDeclaration|LambdaExpression)//ReturnStatement diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml index 6a0c3a8795..a6d71ae83a 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml @@ -57,4 +57,63 @@ public class Foo { } ]]> + + + 0 + + + + + 0 + untracked = serviceExecutionTracker.untrackMatchingEntries(e -> { + ServiceExecutionIdentifiers ids = e.getIdentifiers(); + Long execBqiId = (ids == null) ? null : ids.getBqiId(); + return Objects.equals(bqiId, execBqiId); + }); + untracked.forEach(e -> logger.info("overwriteLastBqi(bqId={}, bqiId={}) untracked {}", bqId, bqiId, e)); + } + } +} + ]]> + + + + 0 + { return i + 1; }).forEach(i -> System.out.println(i)); + } + } +} + ]]> +