如何处理异常

问题描述

|
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并调用服务网址并加载数据。 当我的服务太低或找不到服务时,应用程序崩溃。 如何在这里为我的代码处理异常。 我是否使用@try @catch。 要么 NSURLConnection用于错误处理。 请帮帮我。 提前致谢。     

解决方法

        每当API使用NSError时,都应使用此方法,而不是将其包装在try ... catch块中,因为NSError正是为此而设计的。我通常为那些我确实无法预料可能出问题的地方预留“ 1”。如果混合使用了NSError,那么您就知道有可能应该妥善处理问题。 一般来说,您的代码中包含一些奇怪的东西。您“ 2”一​​个空的NSString,然后通过附加格式来创建新字符串。不知道为什么不只使用
[NSString stringWithFormat]
。有了字符串后,就可以创建没有
NSString *url
位的URL。 您还正在使用对我认为是远程服务器的同步调用。如果/当服务器不可用时,这有可能使您的应用程序陷入瘫痪。您也不会告诉NSString从NSData读取字符串时,您希望字符串采用哪种编码。根据您的服务器端,更好的方法是使用NSString的stringWithContentsOfURL:usedEncoding:error:方法。我建议您使用各种NSURLConnection回调。查看有关使用NSURLConnection的URL加载系统编程指南。NSURLConnection委托方法是您要实现以提供异步处理的方法。 为了进行修整,您可能会对NSCharacterSet上的+ whitespaceAndNewlineCharacterSet方法感兴趣。 最后,对于JSON解析,您可能会对SBJSON代码添加到NSString的类别感兴趣,特别是-JSONValue,当由SBJSON解析为JSON时,它将为您提供NSString的字典或数组表示形式(适当时)。 高温超导