Danger!  You should look at `Try` introduced in 2.10 sometime.  You'd like it I think.