Ссылка на код ошибки для OSX / Cocoa
Вопрос
Если я получаю результат с кодом ошибки из функции Cocoa, есть ли какой-нибудь простой способ выяснить, что это означает (кроме как путем просмотра всех файлов .h в пакетах framework)?
Решение
Вы должны взглянуть на заголовок <Framework/FrameworkErrors.h>
, чтобы узнать, из каких структур вы используете метод, возвращающий ошибку.
Например, NSError
в домене Какао, который вы получаете от метода в платформе Foundation, будет иметь свое свойство code
, описанное в заголовке <Foundation/FoundationErrors.h>
. Аналогично с AppKit и <AppKit/AppKitErrors.h>
и Core Data и <CoreData/CoreDataErrors.h>
.
Кроме того, если вы печатаете описание <=> в отладчике, оно должно включать не только область ошибок и код, но также имя фактической константы кода ошибки, чтобы вы могли найти ее в справочнике по API. . р>
Другие советы
Разделы "Домены ошибок" и "Коды ошибок" в Руководство по программированию для обработки ошибок рассмотрите это достаточно хорошо.Вам нужно сделать следующее:
Зарегистрируйте ошибку, приняв во внимание оба область ошибки (строка, доступная для чтения человеком / Googleable, которая сообщает вам, где искать определения кода ошибки) и код ошибки само по себе (целое число)
Поищите в Google (или прочитайте из списка ниже) и выясните имя заголовочного файла (ов), в котором определены коды ошибок для этого домена ошибок
Найдите в этих заголовочных файлах полученный код ошибки.Вы должны найти как постоянное имя для кода ошибки (например
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.