Pregunta

Si obtengo un código de error como resultado de una función Cocoa, ¿hay alguna manera fácil de descubrir qué significa (aparte de buscar en todos los archivos .h en los paquetes de marco)?

¿Fue útil?

Solución

Deberías mirar el <Framework/FrameworkErrors.h> encabezado para cualquier marco del que provenga el método que está utilizando y que devuelve un error.

Por ejemplo, un NSError en el dominio Cocoa que se obtiene de un método en el marco Foundation tendrá su code propiedad descrita en el <Foundation/FoundationErrors.h> encabezamiento.Lo mismo ocurre con AppKit y <AppKit/AppKitErrors.h> y datos básicos 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 del error, sino también el nombre de la constante del código de error real para que pueda buscarlo en la referencia de API.

Otros consejos

Las secciones sobre 'Dominios de error' y 'Códigos de error' en Apple Guía de programación de manejo de errores abordar esto razonablemente bien.Necesitas hacer lo siguiente:

  1. Registre el error, tomando nota tanto del dominio de error (una cadena legible por humanos o Google que le indica dónde buscar las definiciones de códigos de error) y el código de error sí mismo (un número entero)

  2. Husmee en Google (o lea la lista siguiente) y averigüe el nombre de los archivos de encabezado donde se definen los códigos de error para ese dominio de error.

  3. Busque en esos archivos de encabezado el código de error que obtuvo.Debería encontrar un nombre constante para el código de error (como ENOMEM), y con suerte también un comentario explicativo (como /* Cannot allocate memory */) explicando qué significa el error.Si no hay comentarios y el nombre de la constante no se explica por sí mismo, simplemente busque en Google el nombre de la constante y probablemente encontrará una descripción adecuada.

Algunos archivos de encabezado de dominios de errores importantes:

NSCocoaErrorDomain

Las declaraciones de códigos de error se distribuyen en tres archivos de encabezado:

  • <Foundation/FoundationErrors.h> (Códigos de error genéricos de Foundation)
  • <AppKit/AppKitErrors.h> (Códigos de error genéricos de AppKit)
  • <CoreData/CoreDataErrors.h> (Códigos de error de datos básicos)

NSURLErrorDomain

Controlar NSURLError.h

NSXMLParserErrorDomain

ControlarNSXMLParser.h

NSMachErrorDomain

Controlar /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

Controlar /usr/include/sys/errno.h

NSOSStatusErrorDomain

Controlar

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h

Además, el NSError de Cocoa debe poder mostrarse al usuario final.Si simplemente lo registra, debería ser legible.

Si estás hablando de OSStatus de Carbon y demás, MacErrors.h.

Para 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.   
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top