Apple's Cocoa framework (for Mac, I don't think this is true on iOS) surrounds each event callout with an exception handler that logs any exceptions and otherwise swallows them and allows execution to proceed. It's a bit crazy, and frustrating if you cause an exception to be thrown but don't notice until it's too late to figure out where it came from, or don't know why suddenly the app is behaving strangely since the exception left things in an inconsistent state.