运行代码会导致崩溃。
-(NSString*) ExtractStringKeyValue:(NSString*)key
{
@try {
NSRange start = [_responceInfo rangeOfString:key];
NSRange end = [[_responceInfo substringFromIndex:start.location + start.length+2]
rangeOfString:@"\""];
NSRange rang = NSMakeRange(
start.location + start.length+1
, end.location+1);
return [_responceInfo substringWithRange:rang];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
}
调试控制台:
2012-02-27 01:10:16.254 Clicky [8665:9203]异常: * - [NSCFString substringFromIndex:]:范围或索引越界
2012-02-27 01:10:16.255 Clicky [8665:9203]终于
请帮助。
答案 0 :(得分:2)
我们可以在Console中看到输出,您的代码将通过@finally块:
2012-02-27 00:28:02.794 Clicky[8409:9203] finally
根据错误消息Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSCFString substringFromIndex:]: Range or index out of bounds'
,我可以告诉您,您的问题不在此方法中。
答案 1 :(得分:1)
如果@try块失败,你没有从方法返回任何东西,没有字符串可以返回......
-(NSString*) ExtractStringKeyValue:(NSString*)key
{
NSString *extractedString = nil;
@try {
NSRange start = [_responceInfo rangeOfString:key];
NSRange end = [[_responceInfo substringFromIndex:start.location + start.length+2]
rangeOfString:@"\""];
NSRange rang = NSMakeRange(start.location + start.length+1,
end.location+1);
extractedString = [_responceInfo substringWithRange:rang];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
return extractedString;
}
答案 2 :(得分:0)
我在你剪切的代码中没有看到substringFromIndex
。粘贴,所以@try / @catch块无法正常工作的原因是因为您在此处看到的异常不是来自该代码。 : - )