I just had a pretty painful troubleshooting experience in troubleshooting some code that looked like this:
try { doSomeStuff() doMore() } finally {
I think the real "anti-pattern" here is doing something in a finally block that can throw, not not having a catch.
finally