Beste Ausnahmebehandlungsmethoden oder Empfehlungen? [geschlossen]

12

Ich denke, die beiden Hauptprobleme mit meinen Programmen sind meine Codestruktur / Organisation und meine Fehlerbehandlung. Ich lese Code Complete 2, aber ich muss etwas lesen, um mit potenziellen Problemen arbeiten zu können.

Wenn zum Beispiel auf einer Website etwas nur passieren kann, wenn der Benutzer Daten über Javascript manipuliert, schreiben Sie dafür? Wann fangen Sie keine Fehler ab? Wenn Sie eine Klasse schreiben, die eine Zeichenfolge und ein int als Eingabe erwartet und keine Zeichenfolge und int ist, überprüfen Sie dies, oder lassen Sie es in die aufrufende Methode übergehen, die falsche Parameter übergeben hat?

Ich weiß, dass dies ein weit gefasstes Thema ist, das hier nicht in einer einzigen Antwort beantwortet werden kann. Ich suche daher nach einem Buch oder einer Ressource, die allgemein als Lehrmittel für die ordnungsgemäße Ausnahmebehandlung anerkannt ist.

mowwwalker
quelle
1
Welche Sprache und Entwicklungsplattform verwenden Sie?
Yusubov
1
Ich denke, dass "Clean Code" ein gutes Kapitel über dieses Problem hat
Hoàng Long
Was @ElYusubov sagte. Die Implementierungsdetails und -standards der Sprache / Plattform, mit der Sie sich befassen, haben großen Einfluss auf die Best Practices.
Vaughandroid

Antworten:

12

Eines der guten Dinge, an die Sie sich erinnern sollten, ist die Ausnahmebehandlung when there is a need.

Befolgen Sie für die .NET-Entwicklungsplattform einfach die MSDN-Richtlinien - Best Practices für die Behandlung von Ausnahmen , und lesen Sie diesen schönen Artikel zum Code-Projekt - Best Practices für die Behandlung von Ausnahmen in .NET

Die folgenden Richtlinien gelten jedoch hauptsächlich für jede Entwicklungsplattform:

  • Verwalten Sie Geschäftslogik nicht mit Ausnahmen. Verwenden Sie stattdessen bedingte Anweisungen. Wenn eine Kontrolle mit der if-else-Anweisung eindeutig durchgeführt werden kann, verwenden Sie keine Ausnahmen, da dies die Lesbarkeit und Leistung beeinträchtigt (z. B. Nullkontrolle, Division durch Nullkontrolle). .

  • Ausnahmenamen müssen klar und aussagekräftig sein und die Ursachen für Ausnahmen angeben.

  • Ausnahmen für Fehlerbedingungen beim Implementieren einer Methode auslösen. Wenn Sie beispielsweise anstelle von FileNotFoundException die Werte -1, -2, -3 usw. zurückgeben, kann diese Methode nicht verstanden werden.

  • Bestimmte Ausnahmen anstelle der obersten Ausnahmeklasse abfangen. Dies bringt zusätzliche Leistung, Lesbarkeit und spezifischere Ausnahmebehandlung.

  • Eine Nullkontrolle mit Bedingungen ist keine Alternative zum Abfangen der NullPointerException. Wenn eine Methode null zurückgibt, steuern Sie sie mit der if-else-Anweisung. Wenn eine Rückgabe möglicherweise eine NullPointerException auslöst, fangen Sie sie ab.

  • Versuchen Sie, die Ausnahme wegen des Preises nicht erneut zu werfen. Wenn ein erneutes Auslösen ein Muss war, lösen Sie dieselbe Ausnahme erneut aus, anstatt eine neue Ausnahme zu erstellen. Dies bringt zusätzliche Leistung. Zu dieser Ausnahme können Sie in jeder Ebene zusätzliche Informationen hinzufügen.

  • Definieren Sie Ihre eigene Ausnahmehierarchie, indem Sie die aktuelle Ausnahmeklasse (z. B. UserException, SystemException und ihre Untertypen) erweitern und verwenden. Auf diese Weise können Sie Ihre Ausnahmen spezialisieren und ein wiederverwendbares Modul / eine Ebene von Ausnahmen definieren. Weitere folgen in diesem Link

Yusubov
quelle
2
Einige gute allgemeine Punkte, obwohl ich nicht denke, dass Ihr fünfter Punkt ("Nullkontrolle mit Bedingungen ...") sehr klar ist.
Vaughandroid