Ist es eine gute Übung, NSError zu erweitern?

8

Tut mir leid, dass ich diese Frage gestellt habe. Ich weiß in Java, wir erweitern Exception-Klasse für benutzerdefinierte Ausnahmen. Aber dafür sehe ich keine Szenarien in Ziel c.

Also meine Frage, ist es eine gute Praxis, NSError zu erweitern und benutzerdefinierte Fehler einzuführen? Wenn ja, wann sollten wir die NSError-Klasse erweitern. Ich habe auch die Dokumentation überprüft. Aber ich kann keine übersteuernden Notizen für NSError sehen.

    
uiroshan 27.10.2014, 13:31
quelle

4 Antworten

6

Ich habe es noch nie gesehen und das liegt daran, dass NSError bereits sehr vielseitig ist. Es ermöglicht die Definition des Fehlertyps, indem die Eigenschaften domain und code festgelegt werden und beliebige zusätzliche Informationen im userInfo -Dokument angefügt werden können.

Also, nein, es ist keine gute Übung.

    
trojanfoe 27.10.2014, 13:41
quelle
14

Obwohl ich zustimme, dass du NSError nicht ableiten solltest, ist es sehr nützlich, Kategorien darauf zu legen, und das tue ich regelmäßig. Angenommen, Ihr System veröffentlicht häufig Fehler, die von einem JSON-Block stammen. Ich würde es sehr praktisch finden, eine Kategorie wie folgt zu erstellen:

%Vor%

Ich schreibe oft kleine Helfer, um NSError einfacher zu konstruieren, konstruiere die Benutzerinfo so, wie ich will, und ziehe Daten aus der Benutzerinfo zurück, ohne dass Anrufer ihre interne Darstellung kennen müssen. Ich halte dies für eine sehr gute Form der Datenverbergung und ermutige dazu, aussagekräftigere Nachrichten zu verwenden.

Ähnlich, auch für kleinere Projekte, erstelle ich oft eine +myErrorWithCode:localizedDescription: Kategorie Methode. Ich kenne meine Domain, daher muss ich sie normalerweise nicht weitergeben, und das macht es viel einfacher, den Schlüssel NSLocalizedDescription in den Benutzerinformationen festzulegen. Dies führt wiederum zu besseren Fehlern, da sie einfacher zu erstellen sind, und erleichtert das Ändern der Implementierungsdetails Ihrer Fehlerbehandlung.

    
Rob Napier 27.10.2014 14:15
quelle
4

In der Dokumentation ist geschrieben, dass es ok ist, Unterklasse:

  

Anwendungen können beispielsweise Unterklassen von NSError erstellen,   um bessere lokalisierte Fehlerzeichenfolgen durch Überschreiben bereitzustellen   lokalisierte Beschreibung.

In meinem Fall arbeite ich mit OSStatus , das Int32 ist. NSError-Konstruktor unterstützt nur Int . Also muss ich es ableiten, um OSSStatus zu unterstützen.

    
Ramis 22.09.2015 10:42
quelle
0

Es ist keine schlechte Idee, NSError zu erweitern. Ich habe auch eine Kategorie auf NSError für meinen eigenen Gebrauch gemacht. Ich würde es gerne mit dir teilen.

(1) Erstellen Sie eine Datei strings , um alle Fehlercodes zu definieren:

%Vor%

(2) Erstellen Sie eine Kategorie für NSError, sagen wir "NSError + ErrorInfo":

%Vor%

(3) Definieren Sie es:

%Vor%

(4) Nutze es:

%Vor%     
NSPratik 30.07.2015 06:48
quelle

Tags und Links