我正在研究一些API(Crittercism)来报告客户端到服务器的处理异常。Objective-C:将NSString附加到NSException原因
客户端API以NSException
作为输入参数。在调用API之前,我还需要向NSException
添加一些应用程序上下文信息字符串(NSString
)。
我如何使用Objective-C来做到这一点。我不得不将appContextString附加到异常。
我正在研究一些API(Crittercism)来报告客户端到服务器的处理异常。Objective-C:将NSString附加到NSException原因
客户端API以NSException
作为输入参数。在调用API之前,我还需要向NSException
添加一些应用程序上下文信息字符串(NSString
)。
我如何使用Objective-C来做到这一点。我不得不将appContextString附加到异常。
你可以从旧的属性创建一个新的NSException
对象,但这似乎很杂乱。由于您只是记录处理的异常,因此我会在此之前记录“应用上下文”:
@try {
a = [test characterAtIndex:index];
}
@catch (NSException *exception) {
NSString *appContext = @"...";
[Crittercism leaveBreadcrumb:appContext];
[Crittercism logHandledException:exception];
}
我宁愿从旧的属性构建一个新的NSException对象。 –
@SinuVarghese那么,你为什么不做呢? –
@AminNegm-Awad,我在Objective-C中只有较少的知识,所以我不知道该怎么做。 –
您必须将其复制。这可以很容易地完成。的NSExeption
实例有三个重要的属性:
在复制它,你可以将字符串添加到用户信息词典:
NSMutableDictionary *userInfo = [exception.userInfo mutableCopy];
userInfo[@"YourPrivateKey"] = contextString;
NSException *extendedException = [NSException exceptionWithName:exception.name reason:exception.reason userInfo:userInfo];
我认为你会失去调用堆栈的警告。您可以阅读并将其放入用户信息字典中。我在Objective-Cloud上做了类似的方法。
userInfo[@"CallStackSymbols2] = exception.callStackSymbols;
与调用堆栈返回地址类似。
我不认为这是非常好的,因为调用堆栈成为异常用户信息的一部分,而不是异常本身。对我来说,这并不是一个警告,因为我将异常作为JSON发送,因此将调用堆栈作为JSON对象。我不能说,这对你是否有问题。
你能展示你试过的东西以及你目前收到的任何错误吗? –