Ссылка на код ошибки для OSX / Какао - PullRequest
15 голосов
/ 02 сентября 2008

Если я получаю результат кода ошибки из функции Какао, есть ли какой-нибудь простой способ выяснить, что это значит (кроме как просмотреть все файлы .h в комплектах фреймворка)?

Ответы [ 4 ]

22 голосов
/ 02 сентября 2008

Вы должны взглянуть на заголовок <Framework/FrameworkErrors.h>, чтобы узнать, из какой структуры вы используете метод, возвращающий ошибку.

Например, NSError в домене Какао, который вы получаете от метода в платформе Foundation, будет иметь свое свойство code, описанное в заголовке <Foundation/FoundationErrors.h>. Аналогично с AppKit и <AppKit/AppKitErrors.h> и Core Data и <CoreData/CoreDataErrors.h>.

Кроме того, если вы печатаете описание NSError в отладчике, оно должно включать не только область ошибок и код, но также имя фактической константы кода ошибки, чтобы вы могли найти ее в справочнике по API. .

5 голосов
/ 15 октября 2013

Разделы «Домены ошибок» и «Коды ошибок» в Apple Руководство по программированию обработки ошибок решают эту проблему достаточно хорошо. Вам необходимо сделать следующее:

  1. Зарегистрируйте ошибку, принимая во внимание как домен ошибок (удобочитаемая / Googleable строка, указывающая, где искать определения кода ошибки), так и код ошибки само (целое число)

  2. Обыщите в Google (или прочитайте из списка ниже) и выясните имя файла (ов) заголовка, где определены коды ошибок для этого домена ошибок

  3. Найдите в этих заголовочных файлах код ошибки, который вы получили. Вы должны найти как постоянное имя для кода ошибки (например, ENOMEM), так и, надеюсь, также пояснительный комментарий (например, /* Cannot allocate memory */), объясняющий, что означает ошибка. Если комментариев нет, а имя константы не нуждается в пояснениях, просто введите имя константы в Google, и вы, вероятно, найдете правильное описание.

Некоторые заголовочные файлы основных доменов ошибок:

NSCocoaErrorDomain

Объявления кодов ошибок распределены по трем заголовочным файлам:

  • <Foundation/FoundationErrors.h> (общие коды ошибок основания)
  • <AppKit/AppKitErrors.h> (общие коды ошибок AppKit)
  • <CoreData/CoreDataErrors.h> (коды ошибок базовых данных)

NSURLErrorDomain

Чек NSURLError.h

NSXMLParserErrorDomain

Проверьте NSXMLParser.h

NSMachErrorDomain

Чек /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

Чек /usr/include/sys/errno.h

NSOSStatusErrorDomain

Проверка

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h
1 голос
/ 16 сентября 2008

Кроме того, NSError Какао предназначен для отображения конечному пользователю. Если вы просто войдете в систему, она должна быть читабельной.

Если вы говорите об OSStatus Carbon и подобных, MacErrors.h.

0 голосов
/ 19 июля 2014

Для ошибок NSError добавьте строку кода:

NSError     *error;

// ... Some code that returns an error

// Get the error as a string
NSString *s = [error localizedDescription];

// Observe the code for yourself or display to the user.   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...