gpt4 book ai didi

objective-c - NSException:如何添加 userData 并重新抛出?

转载 作者:行者123 更新时间:2023-12-03 17:52:10 26 4
gpt4 key购买 nike

我正在尝试为我的应用程序编写一个全局异常处理例程。这个想法是它将异常暂时存储在内存中并最终将其报告给服务器,而不是打扰用户。

我想收集尽可能多的信息,所以看起来异常中的 userInfo 字段就是存储它的地方。然后我可以简单地重新抛出异常,或者如下例所示,直接将其报告给全局异常处理程序并继续。

         @catch (NSException *e) {
NSLog(@"Got exception parsing XML stack %@", stack);
[e setValue:stack forKey:@"stack"];
[__zmsGlobals exception:e context:@"Parsing data"];
[self cleanupAfterScan];
[self report:[NSError errorWithDomain:@"zaomengshe.com" code:104 userInfo:e.userInfo] selector:failureSelector];
}

这只是对如何在 userInfo 字段中设置值的猜测。 NSException似乎有一个setValue方法,但是不起作用。它抛出“此类与键堆栈的键值编码不兼容。”

那么最好的方法是什么?我必须从头开始构建一个新的 NSException 吗?

最佳答案

是的,您需要创建新的 NSException 对象,复制/添加您想要的部分,然后再次调用 raise。

@catch (NSException* exception)
{
NSMutableDictionary* d = [[exception userInfo] mutableCopy];
[d setObject:@"new info" forKey:@"newKey"];
NSException * e = [NSException exceptionWithName:[exception name] reason:[exception reason] userInfo:d];
[e raise];
}

关于objective-c - NSException:如何添加 userData 并重新抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23242489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com