/ / Handhabungsbedingungen, die durch Fehler des Programmierers in Swift verursacht werden - swift, Ausnahmebehandlung

Handhabungsbedingungen, die durch Fehler des Programmierers in Swift verursacht werden - swift, Ausnahmebehandlung

Swift bietet Ausnahmebehandlungsfunktionen, diesind in Situationen nützlich, in denen Fehler außerhalb der Kontrolle des Programmierers liegen (fehlende Dateien, unterbrochene Verbindungen usw.) Obwohl ich den gleichen Mechanismus für die Meldung von Situationen verwenden könnte, die durch Fehler des Programmierers verursacht werden (Index außerhalb der Grenzen, Bereichsfehler usw.) cetera) Ich frage mich, ob das der beabsichtigte Weg ist, Ausnahmen zu verwenden.

In Objective-C-Code eine übliche VorgehensweiseDiese Situationen wurden durchgesetzt. Auf der anderen Seite wurde in Objective-C etwas davon abgeraten, Exceptions zu verwenden, so dass es hier keine Eins-zu-eins-Substitution geben kann.

Ebenso gibt es in Java Ausnahmen, die überprüft werden sollen und die nicht aktiviert sind, mit der Absicht, unkontrollierte Ausnahmen für die Fehler des Programmierers zu verwenden.

Mein Verständnis ist, dass es keine gibtaktiviert / deaktiviert die Unterscheidung zwischen Ausnahmen in Swift. Ich würde gerne herausfinden, ob die Verwendung von Ausnahmen oder Behauptungen der richtige Weg ist, Fehler von Programmierern in Swift zu melden, oder ob ich einen anderen Mechanismus verwenden sollte?

Antworten:

1 für die Antwort № 1

Trotz seiner ähnlichen Syntax wie die Ausnahmen von Java, Swift 's do/catch ist für die Behandlung von Fehlern. Mit anderen Worten, Swift unterstützt keine Ausnahmebehandlung.

Sehen diese Frage für einige Unterschiede zwischen der Ausnahmebehandlung von Java und der Fehlerbehandlung von Swift. Ein weiterer Punkt, der der Antwort hinzugefügt werden muss, ist, dass die Fehlerbehandlung von Swift keinen Stapelabbau bietet.

do/catch ist für die Behandlung von behebbaren Fehlern; assert und precondition sind für die Behandlung von nicht behebbaren Programmierfehlern.

Siehe hier für eine Diskussion und ein Zitat von Dave Abrahams wann zu verwenden assert vs precondition.