The magic of prototypes 

try(
    sub {
        do_something();
    },
    catch(
        sub {
            # exception is now in $_
        }
    ),
    finally(
        sub {
            # cleanup goes here
        }
    )
);