OSX / Cocoa的错误代码参考

时间:2008-09-01 20:04:50

标签: cocoa xcode macos

如果我从Cocoa函数得到错误代码结果,是否有任何简单的方法可以找出它的含义(除了通过浏览框架包中的所有.h文件)?

4 个答案:

答案 0 :(得分:22)

你应该查看<Framework/FrameworkErrors.h>标题,看看你正在使用的方法是什么框架,它返回错误来自。

例如,您从Foundation框架中的方法获得的Cocoa域中的NSError将具有code标头中描述的<Foundation/FoundationErrors.h>属性。与AppKit和<AppKit/AppKitErrors.h>以及核心数据和<CoreData/CoreDataErrors.h>类似。

此外,如果您在调试器中打印NSError的描述,它不仅应包含错误域和代码,还应包含实际错误代码常量的名称,以便您可以在API参考。

答案 1 :(得分:5)

Apple Error Handling Programming Guide中关于“错误域”和“错误代码”的部分可以很好地解决这个问题。您需要执行以下操作:

  1. 记录错误,记下错误域(一个人类可读/可用的字符串,告诉您在哪里查找错误代码定义)和错误代码本身(整数)

  2. 在Google上嗅探(或从下面的列表中读取)并找出定义该错误域的错误代码的头文件的名称

  3. 搜索这些头文件以获取您获得的错误代码。您应该找到错误代码的常量名称(例如ENOMEM),并希望还有解释错误含义的解释性注释(如 /* Cannot allocate memory */ )。如果没有评论,并且常量名称不是不言自明的,那么Google就是常量名称,您可能会找到正确的描述。

  4. 主要错误域的一些头文件:

    NSCocoaErrorDomain

    错误代码声明分布在三个头文件中:

    • <Foundation/FoundationErrors.h> (通用基金会错误代码)
    • <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
    

答案 2 :(得分:1)

此外,Cocoa的NSError意味着可以向最终用户显示。如果您只是记录它,它应该是可读的。

如果您正在谈论Carbon的OSStatus等,MacErrors.h。

答案 3 :(得分:0)

对于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.