Pergunta

Se eu receber um código de erro resultado de um Cacau função, existe alguma maneira de descobrir o que ela significa (que por grepping através de todos os .h arquivos no quadro bundles)?

Foi útil?

Solução

Você deve olhar para o <Framework/FrameworkErrors.h> cabeçalho para qualquer que seja a estrutura do método que você está usando que está retornando um erro vem.

Por exemplo, uma NSError na Cacau domínio que você começa a partir de um método do framework Foundation irá ter a sua code imóvel descrito na <Foundation/FoundationErrors.h> cabeçalho.Da mesma forma com AppKit e <AppKit/AppKitErrors.h> e o Núcleo de Dados e <CoreData/CoreDataErrors.h>.

Além disso, se você imprimir a descrição do NSError no depurador, ele deve incluir não apenas o erro de domínio e de código, mas também o nome do atual código de erro constante, de modo que você pode procurar na referência da API.

Outras dicas

As seções de Erro "Domínios" e "Códigos de Erro" na Apple Tratamento De Erro Guia De Programação este endereço razoavelmente bem.Você precisa fazer o seguinte:

  1. O Log do erro, tomando nota de ambos os erro de domínio (humano-legível / Googleable de seqüência de caracteres que indica onde procurar as definições de código de erro) e o código de erro em si (um inteiro)

  2. Farejar no Google (ou ler da lista abaixo) e descobrir o nome do arquivo de cabeçalho(s), onde os códigos de erro para o erro de domínio são definidos

  3. Procurar aqueles ficheiro de cabeçalho(s) para o código de erro que você tem.Você deve encontrar o nome de uma constante para o código de erro (como ENOMEM), e espero que também de um comentário explicativo (como /* Cannot allocate memory */) explicando o que significa o erro.Se não há nenhum comentário, e o nome constante não é auto-explicativo, apenas Google o nome constante e você provavelmente vai encontrar uma boa descrição.

Alguns ficheiros de cabeçalho de erro principais domínios:

NSCocoaErrorDomain

Código de erro declarações são distribuídos em três arquivos de cabeçalho:

  • <Foundation/FoundationErrors.h> (Genérico Fundação códigos de erro)
  • <AppKit/AppKitErrors.h> (Genérico AppKit códigos de erro)
  • <CoreData/CoreDataErrors.h> (Núcleo de Dados de códigos de erro)

NSURLErrorDomain

Seleção NSURLError.h

NSXMLParserErrorDomain

SeleçãoNSXMLParser.h

NSMachErrorDomain

Seleção /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

Seleção /usr/include/sys/errno.h

NSOSStatusErrorDomain

Seleção

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

Além disso, o Cacau é NSError destina-se a ser visualizável para o usuário final.Se você acabou de registrar, deve ser legível.

Se você está falando de Carbono do OSStatus e tal, MacErrors.h.

Para NSError erros de adicionar uma linha 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top