标准化错误代码 - Objective-C

时间:2014-03-19 20:29:36

标签: objective-c error-handling nserror

我试图将错误代码添加到我的项目中,如下所示:

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 个答案:

答案 0 :(得分:2)

这个page对这个主题进行了很好的讨论:

  

与退出状态代码一样,NSError -code表示其性质   问题。这些状态代码在特定错误中定义   域,以避免重叠和混淆。这些状态代码   通常由枚举中的常量定义。

     

例如,在NSCocoaErrorDomain中,是错误的状态代码   由NSFileManager尝试访问不存在的文件引起的是4,   由NSFileNoSuchFileError定义。但是,NSPOSIXErrorDomain中有4个   是指POSIX EINTR或“中断函数”错误。

因此,由于您使用自己的错误域,因此可以创建所需的任何错误代码。顺便说一句,在您的示例中,您似乎滥用了域值:它并不意味着包含错误消息。请使用userInfo[NSLocalizedDescriptionKey]