[
https://issues.apache.org/jira/browse/GROOVY-8085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886597#comment-15886597
]
John Wagenleitner commented on GROOVY-8085:
-------------------------------------------
I think one workaround if you are able to restructure the code would be to
avoid nesting {{try}} blocks and extract the inner blocks into a method. The
problem seemed to have stemmed from having to process more than one finally
block.
{code}
def divideByZero() {
try {
true;
} finally {
1 / 0
}
}
try {
divideByZero()
} catch (Exception e) {
println "caughtt"
}
{code}
> Exception in "finally" not caught by outer "try"
> ------------------------------------------------
>
> Key: GROOVY-8085
> URL: https://issues.apache.org/jira/browse/GROOVY-8085
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 2.4.8
> Environment: linux
> Reporter: Craig Silverstein
> Assignee: Daniel Sun
> Priority: Critical
> Fix For: 2.4.10
>
>
> I would expect the following code to print `caughtt`:
> ```
> groovy -e 'try { try { true; } finally { 1 / 0 } } catch (e) { println
> "caughtt" }'
> ```
> But instead, it prints:
> ```
> Caught: java.lang.ArithmeticException: Division by zero
> java.lang.ArithmeticException: Division by zero
> at script_from_command_line.run(script_from_command_line:1)
> ```
> Why is the exception, thrown by the `finally`, not being caught by the outer
> try/catch?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)