首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crashlytics与定制NSUncaughtExceptionHandler

Crashlytics与定制NSUncaughtExceptionHandler
EN

Stack Overflow用户
提问于 2015-09-01 11:25:54
回答 2查看 4.7K关注 0票数 5

我需要在我发布到其他应用程序的静态库中实现崩溃报告。为此,我将自己注册为NSUncaughtExceptionHandler

代码语言:javascript
复制
NSSetUncaughtExceptionHandler(HsWatchdogUncaughtExceptionHandler);
signal(SIGABRT, SignalHandler);
signal(SIGILL, SignalHandler);
signal(SIGSEGV, SignalHandler);
signal(SIGFPE, SignalHandler);
signal(SIGBUS, SignalHandler);
signal(SIGPIPE, SignalHandler);

在此之前,我还使用UncaughtExceptionHandler保存了对前一个NSGetUncaughtExceptionHandler()的引用。

由于许多使用我的库的应用程序也有自己的崩溃报告机制(通常是Crashlytics),所以我需要我的库很好地发挥作用。

我计划做的是,在我的exceptionHandler与NSException一起调用之后,我想将它传递给‘以前的UncaughtExceptionHandler’。

这是否有效:

代码语言:javascript
复制
self.previousUncaughtExceptionHandler(exception);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 11:53:00

声明一个变量来存储上一个处理程序

代码语言:javascript
复制
static NSUncaughtExceptionHandler *_previousHandler;

首先获取前一个处理程序并将其存储在全局中:

代码语言:javascript
复制
_previousHandler = NSGetUncaughtExceptionHandler();

然后创建您自己的处理程序:

代码语言:javascript
复制
void onException(NSException * exception) {
    // do what you want to do ... then call the previous handler
    _previousHandler(exception);
}

将其设置为未指定的异常处理程序:

代码语言:javascript
复制
 NSSetUncaughtExceptionHandler(&onException)
票数 9
EN

Stack Overflow用户

发布于 2017-07-01 18:54:10

看到这一点,它已经有几年的历史了,但我不确定实现您自己的异常处理程序是否受支持或是否会工作。这真的取决于第三方图书馆如何实施他们的支持。但是两个较大的第三方库(HockeyApp和Crashlytics)建议不要与它们的库一起实现您自己的异常处理程序。https://support.hockeyapp.net/discussions/problems/34639-exception-reason-text-is-missing-in-crash-reports

https://support.hockeyapp.net/discussions/problems/11409-hockeyapp-does-not-generate-crash-report "2.有一个uncaughtExceptionHandler实现捕捉异常,请验证代码中不存在这样的方法。

Is it safe to use NSSetUncaughtExceptionHandler with Fabric?“在iOS上有两个UncaughtExceptionHandlers是不受支持的,也不推荐使用。“您应该只在iOS上使用一个未指定的异常处理程序,我个人不推荐您正在讨论的方法”

领域团队讨论如何将句柄与第三方库结合使用,因此如果您决定这样做,您可能会看到它们是如何实现的。https://github.com/realm/realm-cocoa/issues/3822

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32330395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档