NSString *stringURL=[[NSString alloc] init];
stringURL=[stringURL stringByAppendingFormat:kSearchBarURL,text.text];
NSString *url = [NSString stringWithString:stringURL];
NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
NSString *responseids = [[NSString alloc] initWithData:data1 encoding:nil];
responseids = [responseids stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\r\t"]];
SBJsonParser *parser=[SBJsonParser new];
NSData *data = [parser objectWithString:responseids error:nil];
NSMutableDictionary *searchURL = (NSMutableDictionary*)data;
我编码了这个我没有为我的代码处理异常。
执行json并调用服务url并加载数据。
当我的服务太低或找不到服务时,应用程序会崩溃。
如何在这里处理代码的异常..
我是否使用@try @catch。 要么 NSURLConnection用于错误处理。
请帮帮我。
提前致谢。
答案 0 :(得分:0)
每当API使用NSError时,您应该使用它而不是将其包装在try ... catch块中,因为NSError正是为此而设计的。我通常保留@try
这些我真的无法预料可能出错的地方。如果NSError在混合中,那么您就知道可能存在一个问题,您应该优雅地处理它。
更一般地说,你的代码中有一些奇怪的东西。您alloc init
一个空NSString,然后通过附加格式创建一个新字符串。不确定为什么你不只是使用[NSString stringWithFormat]
。获得字符串后,您可以创建不带NSString *url
位的URL。
您还使用同步调用我认为是远程服务器。如果/当服务器不可用时,这可能会使您的应用程序陷入困境。您也没有告诉NSString当您从NSData读取字符串时,您希望字符串处于何种编码状态。根据您的服务器端更好的方法是使用NSString的stringWithContentsOfURL:usedEncoding:error:方法。我建议您使用各种NSURLConnection回调。查看URL Loading System Programming Guide on Using NSURLConnection NSURLConnection delegate methods是您要实现以提供此异步处理的那些。
对于修剪,您可能对NSCharacterSet上的+whitespaceAndNewlineCharacterSet方法感兴趣。
最后,对于您的JSON解析,您可能对SBJSON代码添加到NSString的类别感兴趣,尤其是-JSONValue,它将在解析为NSString时为您提供NSString的字典或数组表示(如果适用) SBJSON的JSON。
HTH