如何处理异常

时间:2011-06-14 20:43:20

标签: objective-c

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用于错误处理。

请帮帮我。

提前致谢。

1 个答案:

答案 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