Захват исключения NSParseErrorException - PullRequest
0 голосов
/ 22 марта 2010

Может кто-нибудь сказать мне, как я могу получить исключение NSParseErrorException?

Ситуация: мое приложение загружает небольшой файл .plist. Я конвертирую это в словарь, используя строковый метод -propertylist. Это нормально работает нормально. Я проверяю соединение перед тем, как собирать файл, чтобы оно работало нормально, если у меня есть подключение к Интернету, и прекрасно работает, когда у меня нет.

Однако я обнаружил случай использования, который вылетает. Если я нахожусь в месте, где требуется аутентификация перед подключением к Интернету (скажем, в Starbucks), то, что возвращается приложением, не является списком, и попытка его проанализировать вызывает сбой приложения.

Так есть ли способ преобразовать мой код так, чтобы ловится исключение NSParseErrorException, и вместо сбоя программы я мог просто пропустить этот фрагмент кода?

NSDictionary *temp = [myDownloadString propertyList];

Я пытался сделать это

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

но это не сработало.

1 Ответ

2 голосов
/ 22 марта 2010

Исключения являются особым видом ошибок, которые не возвращаются напрямую из методов; исключение разрывает цепь исполнения полностью. Чтобы справиться с этим, вы должны поместить код, который может выбросить его в так называемый блок try / catch, например:

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

Обработка исключений - это большая тема, в которой обсуждаются другие вопросы (наконец, блоки и т. Д.) - вам следует проверить дополнительную документацию, например, здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...