我找到了一种在Crashlytics Android SDK中记录自定义捕获异常的方法,但我找不到类似iOS SDK的内容。有没有办法在iOS上使用Crashlytics记录捕获的异常?
请参阅Android说明:http://support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions
答案 0 :(得分:42)
您现在可以在iOS,tvOS或OS X应用中捕获已记录的NSErrors。你想使用:
[CrashlyticsKit recordError:error];
或
Crashlytics.sharedInstance().recordError(error)
这将允许您为每个用户会话捕获相当数量的已记录NSErrors。这些仅在应用重新启动时发送。记录的错误错误按错误域和代码分组。这意味着错误问题可以跨越许多不同的呼叫站点。
答案 1 :(得分: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中可用。
<强> recordCustomExceptionName:原因:frameArray:强>
此方法可用于在报告中记录单个异常结构。当您的代码与Lua,C#或Javascript等非本地语言交互时,这尤其有用。此调用可能很昂贵,只能在进程终止前不久使用。此API不用于记录NSException对象。所有可安全报告的NSExceptions都会被Crashlytics自动捕获。
答案 2 :(得分:3)
使用Crashlytics SDK无法在iOS中记录捕获的异常。 CLS_LOG可用于记录自定义消息,但这些日志消息将仅使用下一个崩溃数据发送到Crashlytics。如果没有崩溃,这些日志消息将永远不会出现在Crashlytics仪表板中。我得到了Crashlytics支持团队的正式确认。 iOS中的日志捕获异常就在他们的路线图中。
答案 3 :(得分:2)
我已经通过不同的网站获得此功能,以支持替代Crashlytics的IOS。
我发现到目前为止,批评是最好的.. @ 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]
}
参考这些链接,看看它对您有用......!
答案 4 :(得分:1)
在catch块中使用以下行来处理自定义捕获的异常
NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);
正如iOS http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler
所述