Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

NSCocoaErrorDomain

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

  • <Foundation/FoundationErrors.h> (Общие коды ошибок Foundation)
  • <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

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

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

Для ошибок 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.   
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top