Стандартизированные коды ошибок - 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]
для этого.