Vor- und Nachteile der Ausnahmeverwendung in iOS / ObjectiveC [geschlossen]

8

Ich habe die Empfehlung von Apple gelesen unter Ausnahme Verwendung und NSError Verwendung:

Ich lese auch einige ähnliche Stapelüberlauffragen, die darüber diskutieren, ob eine Ausnahme verwendet werden soll oder nicht.

Ausnahme-Handeling in iOS

Ausnahmen in Objective-C verwenden

Objective-C-Ausnahmen

Ich versuche herauszufinden, Vor-und Nachteile der Verwendung Ausnahme als Fehlerbenachrichtigung / Handhabung Methode in iOS (Ehrlich gesagt, ich bin nicht mit Apples Satz zufrieden (es sagt, was zu tun ist, aber es sagt nicht, warum wir tun sollten es):

  

Sie sollten die Verwendung von Ausnahmen für die Programmierung oder reservieren   unerwartete Laufzeitfehler, wie zum Beispiel der Zugriff außerhalb der Grenzen der Sammlung,   Versuche, unveränderliche Objekte zu mutieren, eine ungültige Nachricht zu senden und   Die Verbindung zum Fensterserver wird unterbrochen. Du kümmerst dich normalerweise um   diese Art von Fehlern mit Ausnahmen, wenn eine Anwendung ist   erstellt und nicht zur Laufzeit.

Ausnahmeverwendungsprofis:

  • Es ist nicht erforderlich, den gesamten Zwischencode zwischen fehlererzeugendem Code und Fehlerbehandlungscode zu ändern

  • Es verschmutzt keine Argumente und gibt keine Werte für Methoden zurück

Nachteile:

  • Bei allen manuell verwalteten Speicher-Codes müssen wir besonders vorsichtig sein (wir müssen es in automatisch wiederspeichernde Objekte einbinden, um sicherzustellen, dass Ressourcen freigegeben werden).

  • Wir müssen mit der Grenze zwischen unserem Code und Framework vorsichtig sein. Wenn unsere Ausnahmen unseren Code verlassen, könnten wir in Schwierigkeiten geraten (weil Frameworks Speicher manuell verwalten können)

Habe ich etwas vermisst? Gibt es zusätzliche Nachteile / Vorteile?

Es sieht so aus, als wären Ausnahmen für bibliotheksähnlichen Code in Ordnung (wenn wir ziemlich viel dicht gepackten Code haben, der nicht viel mit externen Systemen / Frameworks kommuniziert. Und es sieht so aus, als wäre die Ausnahme für den Code, der aktiv mit anderen Frameworks interagiert.

Beweist Ihre Erfahrung diese Theorie?

Ich freue mich über weitere Informationen zu diesem Thema.

    
Victor Ronin 02.10.2012, 17:55
quelle

1 Antwort

13

tl; dr Ausnahmen sollten nur für fatale / nicht behebbare / Programmierfehler verwendet werden. Der Versuch, sie in Java oder anderen Umgebungen zu verwenden, in denen Ausnahmen möglich sind, führt zu einem zerbrechlicheren, schwer zu wartenden und schwer zu umstrukturierenden Code. Gleichzeitig wird die Fähigkeit zur Nutzung von System-Frameworks eingeschränkt.

Con: Wenn Sie Ausnahmen für Flusskontrolle und / oder behebbare Fehler in Ihrem Code verwenden, unterscheidet sich Ihr Code von Apples Entwurfsmustern.

Endergebnis?

• Sie können Apples APIs überhaupt nicht verwenden in Ihrem Code, es sei denn, die Grenze zwischen Ihrem Code und Apples immer isoliert das Ausnahmeverhalten

• Jedes Mal, wenn Sie einen Refactor verwenden, müssen Sie eine Menge Code für die Ausnahmebehandlung umgestalten

• Viele Dinge, die trivial sein sollten, werden sehr komplex sein; Zum Beispiel können Sie Ihre Objekte nicht in eine aufzählbare Sammlung stellen und sie ohne diese Aufzählung aufzählen - Block, for-Schleife, was auch immer ... - auch mit Ausnahmeverarbeitung an den Grenzen.

Überlegen Sie:

%Vor%

Wenn doSomething aus irgendeinem Grund eine Warnung auslöst, handelt es sich um eine Verletzung der dokumentierten Entwurfsmuster des Frameworks, da Sie eine Ausnahme über Frames in Apples Framework (s) werfen.

Das ist ein mächtiger großer Betrug. Groß genug, dass ich mir eine Reihe von Profis nicht vorstellen kann, die es aufwiegen.

    
bbum 02.10.2012, 18:10
quelle

Tags und Links