在iOS中未捕获的异常后有没有办法执行代码?

前端之家收集整理的这篇文章主要介绍了在iOS中未捕获的异常后有没有办法执行代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How to do a application level exception handling in iPhone application3个
我一直在为几个实现多级日志记录的应用程序开发框架.它主要用于内部用于测试与其他设备通信的应用程序,但也用于我们将要分发的一些应用程序中.

有没有办法捕获未捕获的异常并立即执行代码以将异常保存到日志文件中?目前,Log类只是经常写入文件,在写入失败的情况下在两个文件之间交替等等.这没关系,但是如果它可以看到发生未处理的异常,写入任何未写入的日志会很棒要记录的条目,请注意发生异常并记录其详细信息,然后允许该应用程序崩溃.

如果有一些方法可以在应用程序范围内捕获未处理的异常,我会认为它会是这样的:

appDidReceiveUnhandledException:(NSException *)exception
{
    //write log to disk
    //append exception info to log file
    //rethrow exception
}

如果有人能够就这是否可能给我提供见解或建议,我们将不胜感激.

解决方法

您可以在AppDelegate中添加应用程序范围的未处理异常处理程序:
void HandleExceptions(NSException *exception) {
    NSLog(@"The app has encountered an unhandled exception: %@",[exception debugDescription]);
    // Save application data on crash
}

在AppDelegate中引用它将didFinishLaunchingWithOptions作为:

NSSetUncaughtExceptionHandler(&HandleExceptions);

猜你在找的iOS相关文章