繁体   English   中英

Objective-C错误处理

[英]Objective-C error handling

任何人都知道当以下错误时我该如何处理错误代码:

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];

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

有关超时示例,请参见此处对此问题的可接受答案。 对于NSURLConnection示例,请在此处签出Apple文档

一般错误处理-

以下链接可能会有所帮助-> 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:...代码。

如果那不能解决问题,您能否提供一些信息/日志语句,说明错误在哪里/什么导致应用程序停止?

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM