Handle catch and finally blocks properly.

The catch and finally blocks (whether entered synchronously or
asynchronously) are not called with an appropriate exception handler
in place to catch exceptions thrown by synchronous code in the body.
pFix this by wrapping the catch and finally function bodies in
try/catch.