Listen,
If in case you were to do something after each subroutine, and the procedure depends on the value of the error_msg, then you would have to do the checking as you are currently doing... Otherwise, you could check the status in each sub routine and exit in case false... Even bilbo's suggestion seems cool..