代码之家  ›  专栏  ›  技术社区  ›  Kristopher Johnson

OSX/COCO的错误代码参考

  •  15
  • Kristopher Johnson  · 技术社区  · 17 年前

    如果我从cocoa函数得到一个错误代码结果,有没有什么简单的方法可以弄清楚它的含义(除了对框架包中的所有.h文件进行grepping之外)?

    4 回复  |  直到 11 年前
        1
  •  22
  •   Chris Hanson    17 年前

    你应该看看 <Framework/FrameworkErrors.h> 返回错误的方法所使用的框架的标题。

    例如,一个 NSError 从基础框架中的方法中获得的COCOA域将具有它的 code 中描述的属性 <Foundation/FoundationErrors.h> 标题。与AppKit和 <AppKit/AppKitErrors.h> 核心数据和 <CoreData/CoreDataErrors.h> .

    另外,如果打印 恩塞罗 在调试器中,它不仅应包括错误域和代码,还应包括实际错误代码常量的名称,以便您可以在API引用中查找它。

        2
  •  5
  •   Mark Amery Harley Holcombe    12 年前

    苹果公司的“错误域”和“错误代码”部分 Error Handling Programming Guide 把这件事处理得相当好。您需要执行以下操作:

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

    2. 在Google上四处搜寻(或从下面的列表中读取),找出头文件的名称,其中定义了该错误域的错误代码。

    3. 在这些头文件中搜索您得到的错误代码。您应该为错误代码找到两个常量名(如 ENOMEM 希望还有一个解释性的评论(比如 /* Cannot allocate memory */ )解释错误的含义。如果没有注释,而且常量名也不是无需解释的,只需谷歌常量名,您就可以找到正确的描述。

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

    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
    
        3
  •  1
  •   wompf    17 年前

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

    如果你说的是碳的Osstatus等等,MacErrors.h.

        4
  •  0
  •   Will    11 年前

    对于nserrror错误,请添加一行代码:

    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.