调用applicationdIDFinishLaunchingWithOptions:
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
并使用它来处理异常:
voID uncaughtExceptionHandler(NSException *exception) { // handling exception}
但我也使用sdk,它已经使用了NSSetUncaughtExceptionHandler.然后我的方法uncaughtExceptionHandler在异常发生时没有调用.
我知道一个app只能是一个处理程序.但我需要它和sdk,这个代码可以处理全局级别的异常.
在这种情况下,您有什么想法我可以使用NSSetUncaughtExceptionHandler吗?或者其他想法如何在全球范围内处理异常?
十分感谢.
此外,您可以存储SDK的处理程序,并在uncaughtExceptionHandler中调用它以使SDK协同工作.
示例代码:
static NSUncaughtExceptionHandler *exceptionHandler = NulL;typedef voID (*sighandler_t)(int);static sighandler_t sigHandler = NulL;static voID handleException(NSException *e){ //your code ... //call the SDK handler if (exceptionHandler) { exceptionHandler(e); }}static voID handleSignal(int signal){ //your code ... if (sigHandler) { sigHandler(signal); }}voID installUncaughtExceptionHandler(){ // store the SDK handler exceptionHandler = NSGetUncaughtExceptionHandler(); NSSetUncaughtExceptionHandler(&handleException); sigHandler = signal(SIGABRT,handleSignal); signal(SIGILL,handleSignal); signal(SIGSEGV,handleSignal); signal(SIGFPE,handleSignal); signal(SIGBUS,handleSignal); signal(SIGPIPE,handleSignal);}总结
以上是内存溢出为你收集整理的iOS版.当其他代码已经使用NSSetUncaughtExceptionHandler时,我怎么能捕获异常?全部内容,希望文章能够帮你解决iOS版.当其他代码已经使用NSSetUncaughtExceptionHandler时,我怎么能捕获异常?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)