我正在研究一些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對象。我不能說,這對你是否有問題。
你能展示你試過的東西以及你目前收到的任何錯誤嗎? –