You can implement an uncaught exception handler conforming to this signature:
typedef volatile void NSUncaughtExceptionHandler(NSException *exception);
by calling the NSSetUncaughtExceptionHandler
function. From there you can popup whatever UI you want to inform the user that the app is shutting down (we actually collect a stack trace and invoke a mailto: url to have the crash sent to us--this is obsolete given iTunes 8.2's automatic crash reporting).
EDIT:
To be clear, your app will be terminated after your handler is finished, there's no way around it. I'm not sure why you would want your app to continue execution at this point, given that it's very likely in an inconsistent state. It's almost always better to just let it crash than to potentially corrupt data or worse. From the Apple docs:
Sets the top-level error-handling
function where you can perform
last-minute logging before the program
terminates.