'uncaughtException' 事件是一种粗糙的异常处理的机制,只能用作不得已的最后手段。 此事件不应该被用作相当于就算出错也继续执行。 未处理的异常本身就意味着应用程序处于未定义的状态。 尝试恢复应用程序代码而未正确地从异常中恢复,可能会导致其他无法预料和不可预测的问题。

    此事件的句柄中抛出的异常不会被捕获。 进程会以非零的退出码退出,并打印堆栈跟踪。 这是为了避免无限的循环。

    在出现未捕获的异常时尝试去恢复,就类似于在升级电脑时拔掉电源线。 10次中有9次不会出现问题。 但是第10次时系统就可能出现崩溃。

    'uncaughtException' 事件的正确使用方式是:在进程被关闭之前,执行清理已分配资源(比如文件描述符、句柄等)的同步操作。 在 'uncaughtException' 事件触发之后,尝试恢复正常运行是不安全的。

    重启已经崩溃的应用是更可靠的方式,不管 uncaughtException 事件是否被触发,应该在独立的过程中使用外部监视器,以检测应用程序故障并根据需要恢复或重启。