我有一个ios应用程序,我已经在使用Crittercism了。它完美地报告了例外情况。
我的问题是我也希望将这些例外记录到我的后端服务器。
我已经尝试了许多事情来实现它,但无济于事。 以下是我尝试的事项列表:
NSSetUncaughtExceptionHandler(&myExceptionHandler);
如果我这样做,则Crittercism中不会报告异常。
NSSetUncaughtExceptionHandler(&myExceptionHandler);
将异常发送到我的服务器。
然后在myExceptionHandler
函数中调用Crittercism的构造函数并重新抛出异常。不起作用。
调用Crittercism的构造函数,然后调用NSSetUncaughtExceptionHandler(&myExceptionHandler);
并在myExceptionHandler
调用[Crittercism logHandledException:exception];
。也不起作用。
在我的异常处理程序中序列化异常对象并将其存储在用户首选项中。当用户重新启动应用程序时,请调用[Crittercism logHandledException:exception];
,然后将异常发送到我的后端服务器。问题是,我无法将字符串反序列化为异常对象。我无法将NSString
形式的堆栈跟踪放入我的异常对象中。
我本可以尝试的一些事情:
让生物处理异常,然后在下次重启时,将调用crittercismDidCrashOnLastLoad
- 但我是否有异常信息,或者我可以从某处访问它。
我可能不需要将字符串反序列化为异常对象。我相信Crittercism也将异常更改为json对象并将此json对象发送到其服务器。但我无法找出使用哪些函数将自定义json对象发送给批评。
有人可以指导我如何继续吗?
答案 0 :(得分:2)
我找到了解决方法。首先使用
启动生物对象[Crittercism initWithAppID:crittercismAppID andKey:crittercismKey andSecret:crittercismSecret];
现在定义
NSUncaughtExceptionHandler* crittercismHandler = NSGetUncaughtExceptionHandler();//You have stored the reference to the crittercism function that was going to get called in the event of an exception
然后,
NSSetUncaughtExceptionHandler(&myHandledException);//Set the handler to your custom function
在自定义函数中,对您的异常执行任何操作,然后调用
NSSetUncaughtExceptionHandler(crittercismHandler);//this will re-set the exception handler to the one of crittercism
呼叫
crittercismHandler(exception);//This will send the exception to crittercism servers.
你可以为信号做类似的事情。
答案 1 :(得分:1)
您可以像我们一样管理自己的异常处理。此页面包含指向示例项目的链接 http://www.cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html