Uncaught application-level exceptions are only one cause of crashes. BSD signals, like EXC_BAD_ACCESS, can also cause crashes - and catching NSExceptions won't prevent those.
It's impossible to say what the specific crash is without knowing the details of try_doMyWork:, but I think the most common cause of crashes in the C layer (not the Objective-C layer) is memory management problems - an attempt at writing or reading something your app is not supposed to access. The most likely explanation is that the exception you see in debug is not the same as the error you see in distribution.