捕获NSParseErrorException

时间:2010-03-22 13:39:03

标签: iphone objective-c

有人能告诉我如何捕获NSParseErrorException吗?

情况:我的应用程序下载了一个小的.plist文件。我使用字符串方法-propertylist将其转换为字典。这通常很好。我在检索文件之前检查了连接,所以如果我连接到互联网就可以正常工作,并且当我没有连接时工作正常。

但是,我发现了一个崩溃的用例。如果我在连接到互联网之前需要验证的位置(比如星巴克,那么)应用程序返回的内容不是一个plist,并且尝试解析它会导致应用程序崩溃。

那么有没有办法转换我的代码以便捕获NSParseErrorException而不是崩溃程序我可以跳过这段代码?

NSDictionary *temp = [myDownloadString propertyList];

我试过这个

if ([myDownloadString propertyList]==NSParseErrorException){
//do something
}

但这不起作用。

1 个答案:

答案 0 :(得分:2)

异常是一种特殊的错误,不会直接从方法返回;一个例外完全破坏了执行链。要处理它,你必须将可能抛出它的代码放在所谓的try / catch块中,如下所示:

NSDictionary * temp = nil;
@try {
    temp = [myDownloadString propertyList];
} @catch (NSParseErrorException * exception) {
    // do something
}

异常处理是一个很大的主题,其他内容正在进行(最后是块等) - 你应该查看一些further documentation eg here.