I just had a pretty painful troubleshooting experience in troubleshooting some code that looked like this:
try { doSomeStuff() doMore() } finally {
I think that try with no catch is anti-pattern. Using try/catch to handle exceptional conditions (file IO errors, socket timeout, etc) is not an anti-pattern.
If you're using try/finally for cleanup, consider a using block instead.