Frage

Wenn ich von einer Cocoa-Funktion einen Fehlercode erhalte, gibt es eine einfache Möglichkeit, herauszufinden, was das bedeutet (außer indem ich alle .h-Dateien in den Framework-Bundles durchsuche)?

War es hilfreich?

Lösung

Sie sollten sich das ansehen <Framework/FrameworkErrors.h> -Header für das Framework, von dem die von Ihnen verwendete Methode stammt, die einen Fehler zurückgibt.

Zum Beispiel ein NSError in der Cocoa-Domäne, die Sie von einer Methode im Foundation-Framework erhalten, wird dies der Fall sein code beschriebene Eigentum <Foundation/FoundationErrors.h> Header.Ebenso mit AppKit und <AppKit/AppKitErrors.h> und Kerndaten und <CoreData/CoreDataErrors.h>.

Auch wenn Sie die Beschreibung des ausdrucken NSError Im Debugger sollte es nicht nur die Fehlerdomäne und den Code enthalten, sondern auch den Namen der tatsächlichen Fehlercodekonstante, damit Sie diese in der API-Referenz nachschlagen können.

Andere Tipps

Die Abschnitte zu „Fehlerdomänen“ und „Fehlercodes“ in Apples Programmierhandbuch zur Fehlerbehandlung gehe das einigermaßen gut an.Sie müssen Folgendes tun:

  1. Protokollieren Sie den Fehler und notieren Sie sich beide Fehlerdomäne (eine für Menschen lesbare/googlebare Zeichenfolge, die Ihnen sagt, wo Sie nach den Fehlercodedefinitionen suchen müssen) und die Fehlercode selbst (eine Ganzzahl)

  2. Stöbern Sie bei Google (oder lesen Sie die Liste unten) und finden Sie den Namen der Header-Datei(en) heraus, in der die Fehlercodes für diese Fehlerdomäne definiert sind

  3. Durchsuchen Sie diese Header-Dateien nach dem Fehlercode, den Sie erhalten haben.Sie sollten sowohl einen konstanten Namen für den Fehlercode finden (wie ENOMEM), und hoffentlich auch einen erläuternden Kommentar (wie /* Cannot allocate memory */) erklärt, was der Fehler bedeutet.Wenn kein Kommentar vorhanden ist und der Konstantenname nicht selbsterklärend ist, googeln Sie einfach den Konstantennamen und Sie werden wahrscheinlich eine passende Beschreibung finden.

Einige Header-Dateien der Hauptfehlerdomänen:

NSCocoaErrorDomain

Fehlercodedeklarationen sind auf drei Header-Dateien verteilt:

  • <Foundation/FoundationErrors.h> (Generische Foundation-Fehlercodes)
  • <AppKit/AppKitErrors.h> (Generische AppKit-Fehlercodes)
  • <CoreData/CoreDataErrors.h> (Core Data-Fehlercodes)

NSURLErrorDomain

Überprüfen NSURLError.h

NSXMLParserErrorDomain

ÜberprüfenNSXMLParser.h

NSMachErrorDomain

Überprüfen /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

Überprüfen /usr/include/sys/errno.h

NSOSStatusErrorDomain

Überprüfen

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

Außerdem soll der NSError von Cocoa für den Endbenutzer sichtbar sein.Wenn Sie es einfach protokollieren, sollte es lesbar sein.

Wenn Sie über Carbons OSStatus und dergleichen sprechen, MacErrors.h.

Für NSError-Fehler fügen Sie eine Codezeile hinzu:

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.   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top