Objective-C错误处理

时间:2013-04-13 04:38:02

标签: objective-c error-handling connection

如果出现以下错误,任何人都知道如何处理错误代码:

database_flag = [NSString stringWithContentsOfURL:database_flag_query encoding:NSASCIIStringEncoding error:&error];

要解释更多请在下面找到我的代码 基本上我想检查mysql的标志 如果标志为1,那么我从数据库获取流的IP地址 否则我使用当地的一家商店。 唯一的问题是当无法访问mysql服务器时程序卡住!!

database_flag_query = [NSURL URLWithString:@"http://192.168.0.20/iqkradio_stream_ip_flag.php"];
database_flag = [NSString stringWithContentsOfURL:database_flag_query encoding:NSASCIIStringEncoding error:&error];

database_flag = [database_flag stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([database_flag isEqualToString: @"1"])
{
    NSLog(@"URL flag is set");
    database_url_query = [NSURL URLWithString:@"http://192.168.0.20/iqkradio_stream_ip_url.php"];
    database_url = [NSString stringWithContentsOfURL:database_url_query encoding:NSASCIIStringEncoding error:&error];
    database_url = [database_url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    url1 = [NSURL URLWithString:[database_url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSLog(database_url);
}

else
{
    NSLog(@"URL flag is not set, Reverting to stored value");
    url1 = [NSURL URLWithString: [NSString stringWithFormat: @"http://radio.qkradio.com.au:8382/listen.mp3"]];
}



streamer = [[AudioStreamer alloc] initWithURL:url1];

1 个答案:

答案 0 :(得分:0)

编辑 - NSURLConnection&超时 - 根据下面的附加信息和评论流,并将信息放入答案(而不是长评论流):

有关超时示例,请参阅此问题here的已接受答案。对于NSURLConnection示例,请查看apple文档here

常规错误处理 -

以下链接可能会有所帮助 - > http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/ErrorHandling/ErrorHandling.html

“在调用此方法之前,您需要创建一个合适的指针,以便您可以传递其地址:

NSError *anyError;
BOOL success = [receivedData writeToURL:someLocalFileURL
                                options:0
                                  error:&anyError];
if (!success) {
    NSLog(@"Write failed with error: %@", anyError);
    // present error to user
}

如果发生错误,writeToURL:...方法将返回NO,并更新anyError指针以指向描述问题的错误对象。

在处理通过引用传递的错误时,重要的是测试方法的返回值以查看是否发生错误,如上所示。不要只是测试错误指针是否设置为指向错误。“

因此,对于您的问题,请尝试添加:

if(!database_flag)
{
    //call your error handling function
    [myFunction withError: error];
}
修剪database_flag之前

。如果您的连接无效,则需要先处理它,然后再继续使用if([database_flag isEqualToString:...代码。

如果这不能解决问题,您能否提供一些关于暂停应用程序的错误的位置/内容的信息/日志声明?

希望有所帮助。