Стандартизированные коды ошибок - Objective-C

Я пытаюсь добавить коды ошибок в один из моих проектов следующим образом:

typedef enum {
    FSChatErrorChatManagerInUse = 101,
    FSChatErrorFailedToRetrieveHeader = 202,
    FSChatErrorFailedToGetCount = 303,
} FSChatErrorCode;

Затем отправьте:

NSError * err = [NSError errorWithDomain:@"Failed To Get Count"
                                    code:FSChatErrorFailedToGetCount
                                userInfo:nil];

Поэтому, когда вы получили уведомление об ошибке, вы можете увидеть, что это за вид:

if (err.code == FSChatErrorFailedToGetCount) {
    // do stuff
}

Вопрос

Есть ли какой-то стандартный синтаксис кода ошибки или нумерация, которой я должен следовать? Мне трудно найти ссылку.

1 ответ

Решение

На этой странице есть хорошее обсуждение этой темы:

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

Например, в NSCocoaErrorDomain код состояния для ошибки, вызванной NSFileManager, пытающимся получить доступ к несуществующему файлу, равен 4, как определено NSFileNoSuchFileError. Тем не менее, 4 в NSPOSIXErrorDomain относится к POSIX EINTR или ошибке "interupted function".

Таким образом, поскольку вы используете свой собственный домен ошибок, вы можете создавать любые коды ошибок, какие захотите. Кстати, в вашем примере вы, кажется, неправильно используете значение домена: оно не должно содержать сообщения об ошибке. Использование userInfo[NSLocalizedDescriptionKey] для этого.

Другие вопросы по тегам