47

我找到了一种在 Crashlytics Android SDK 中记录自定义捕获的异常的方法,但我在 iOS SDK 中找不到类似的东西。有没有办法在 iOS 上使用 Crashlytics 记录捕获的异常?

见安卓解释: http: //support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions

4

5 回答 5

43

来自 Crashlytics 和 Fabric 的 Mike 在这里。

您现在可以在您的 iOS、tvOS 或 OS X 应用程序中捕获记录的 NSErrors。你想使用:

[CrashlyticsKit recordError:error];

或者

Crashlytics.sharedInstance().recordError(error)

这将让您在每个用户会话中捕获相当数量的已记录 NSError。这些仅在应用重新启动时发送。记录的错误错误按错误域和代码分组。这意味着错误问题可能跨越许多不同的呼叫站点。

查看文档

于 2016-01-12T18:37:38.703 回答
5

最后 Crashlytics 添加了所需的功能 3.5.0!

[CrashlyticsKit recordError:error];

或者

Crashlytics.sharedInstance().recordError(error)

参考

/**
 *
 * This allows you to record a non-fatal event, described by an NSError object. These events will be grouped and
 * displayed similarly to crashes. Keep in mind that this method can be expensive. Also, the total number of
 * NSErrors that can be recorded during your app's life-cycle is limited by a fixed-size circular buffer. If the
 * buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch
 * of your application.
 *
 * You can also use the -recordError:withAdditionalUserInfo: to include additional context not represented
 * by the NSError instance itself.
 *
 **/
- (void)recordError:(NSError *)error;
- (void)recordError:(NSError *)error withAdditionalUserInfo:(nullable CLS_GENERIC_NSDICTIONARY(NSString *, id) *)userInfo;

https://docs.fabric.io/ios/changelog.html#january-7-2016


历史

这实际上不像我预期的那样工作:消息保存到 Crashlytics 但只有在应用程序重新启动后才会保存最后一条消息。

到目前为止,这里提到的解决方案都不起作用。无法使用 Crashlytics 跟踪 iOS 中处理的异常。


您可以使用它来记录任何异常

[[Crashlytics sharedInstance] recordCustomExceptionName:@"HandledException" reason:@"Some reason" frameArray:@[]];

在 Crashlytics 中,您将在崩溃报告中看到它,但带有NON-FATALS类型。

如果不是,则事件的预期使用异常以与 Android 处理异常相同的方式记录。

这在版本 3.0.7 中可用。

记录自定义异常名称:原因:frameArray:

此方法可用于在报告中记录单个异常结构。这在您的代码与 Lua、C# 或 Javascript 等非本地语言交互时特别有用。此调用可能很昂贵,并且只能在进程终止前不久使用。此 API 不打算用于记录 NSException 对象。Crashlytics 会自动捕获所有可安全报告的 NSException。

https://docs.fabric.io/appledocs/Crashlytics/Classes/Crashlytics.html#//api/name/recordCustomExceptionName:reason:frameArray

于 2015-10-13T20:49:28.047 回答
3

无法使用 Crashlytics SDK 在 iOS 中记录捕获的异常。CLS_LOG 可用于记录自定义消息,但这些日志消息将仅与下一个崩溃数据一起进入 Crashlytics。如果没有崩溃,这些日志消息将永远不会出现在 Crashlytics 仪表板中。我得到了 Crashlytics 支持团队的官方确认。在 iOS 中记录捕获的异常在他们的路线图中。

于 2015-05-13T04:36:54.230 回答
2

我已经浏览了不同的站点,以使 IOS 替代 Crashlytics 支持此功能。

我发现 crittercism 是迄今为止最好的..@Dima 我认为它是 Crashlytics 的替代品..试试吧。

以下是一些有助于将批判性集成到您的项目中的链接......!

http://docs.crittercism.com/ios/ios.html#logging-handled-exceptions

http://www.raywenderlich.com/34050/overview-of-ios-crash-reporting-tools-part-2

@try {

     } 
@catch (NSException *exc) 
     {
        [Crittercism logHandledException:exc]
    }

参考这些链接,看看它对你有用与否......!

于 2015-05-12T13:42:56.507 回答
1

在 catch 块中使用以下行来处理自定义捕获的异常

NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);

正如 iOS 的解释http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler

于 2015-05-12T06:55:56.303 回答