framework - Referencia de código de error para OSX/Cocoa
cocoa touch layer (4)
Si obtengo un resultado de código de error de una función Cocoa, ¿hay alguna manera fácil de descubrir lo que significa (aparte de grepping a través de todos los archivos .h en los paquetes de framework)?
Debería ver el encabezado <Framework/FrameworkErrors.h>
para cualquier marco de trabajo que el método que está utilizando y que devuelve un error.
Por ejemplo, un NSError
en el dominio Cocoa que obtiene de un método en el marco de Foundation tendrá su propiedad de code
descrita en el encabezado <Foundation/FoundationErrors.h>
. De manera similar con AppKit y <AppKit/AppKitErrors.h>
y Core Data y <CoreData/CoreDataErrors.h>
.
Además, si imprime la descripción del NSError
en el depurador, debe incluir no solo el dominio y el código de error, sino también el nombre de la constante del código de error real para que pueda buscarlo en la referencia de la API.
Además, el NSError de Cocoa está destinado a ser visible para el usuario final. Si solo lo registra, debería ser legible.
Si estás hablando de OSStatus de Carbon y tal, MacErrors.h.
Las secciones sobre "Dominios de error" y "Códigos de error" en la Guía de programación de manejo de errores de Apple abordan esto razonablemente bien. Debes hacer lo siguiente:
Registre el error, teniendo en cuenta tanto el dominio de error (una cadena legible por humanos / Googleable que le dice dónde buscar las definiciones de código de error) y el código de error en sí (un número entero)
Busque en Google (o lea de la lista a continuación) y descubra el nombre de los archivos de encabezado donde se definen los códigos de error para ese dominio de error
Busque en esos archivos de encabezado el código de error que obtuvo. Debería encontrar tanto un nombre constante para el código de error (como
ENOMEM
), y con suerte también un comentario explicativo (como/* Cannot allocate memory */
) explicando lo que significa el error. Si no hay comentarios, y el nombre de la constante no se explica por sí solo, solo busca el nombre de la constante y probablemente encontrarás una descripción adecuada.
Algunos archivos de encabezado de los principales dominios de error:
NSCocoaErrorDomain
Las declaraciones de código de error se distribuyen en tres archivos de encabezado:
-
<Foundation/FoundationErrors.h>
(Códigos de error de Fundación genérica) -
<AppKit/AppKitErrors.h>
(códigos de error genéricos de AppKit) -
<CoreData/CoreDataErrors.h>
(códigos de error de Core Data)
NSURLErrorDomain
Ver NSURLError.h
NSXMLParserErrorDomain
Ver NSXMLParser.h
NSMachErrorDomain
Verifique /usr/include/mach/kern_return.h
NSPOSIXErrorDomain
Verifique /usr/include/sys/errno.h
NSOSStatusErrorDomain
Comprobar
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h
Para los errores de NSError, agregue una línea de código:
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.