Frage

Geben Sie mir einige Ihrer Gedanken, auf denen eine bessere Codierung der Praxis / macht effizienteren Code / sieht schönere / was auch immer: Eine Erhöhung und Verbesserung Ihrer Fähigkeit zu verwenden, wenn Aussagen zu antizipieren und potenzielle Probleme zu fangen? Oder einfach eine gute Nutzung von try / catch im Allgemeinen?

Lassen Sie uns sagen, dass dies für Java ist (wenn es darauf ankommt).

Edit: Ich Übergang mich derzeit weg von einigen zugegebenermaßen veraltet und beschränkt aktuellen Programmierpraktiken, aber ich bin ein wenig auf die Notwendigkeit zerrissen, so zu tun, in einigen Punkten (z wie diese). Ich bin für einige Perspektiven auf das einfach zu fragen. Keine Debatte.

Andere Tipps

if Blöcke sind etwas schneller; wenn Sie nicht gehen, um ein Dutzend von ihnen benötigen, sind sie eine bessere Idee als try/catches. Ausnahmen sollten die Ausnahme sein, nicht jedes Mal, wenn der Code ausgeführt wird. Ich benutze Ausnahmen für seltene Ereignisse wie Server Abschaltungen und if Blöcke für jede meiner steuerbaren Variablen (auch wenn sie ein paar Mal jeden Tag passieren).

Unabhängig davon, welche Code Sie schreiben, werden Sie beide am Ende mit. Ich kann für den Java-Runtime nicht sprechen, aber auf der .NET-Laufzeit gibt es eine Performance-Einbußen bei der Verwendung von Try-Catch-Blöcken verbunden. Als Ergebnis, ich versuche, sie in Bereichen nur zu verwenden, wenn ich eine klare Art und Weise haben die Ausnahme einmal gefangen zu behandeln (auch wenn es die Existenz eines Problems nur ist die Anmeldung).

Wenn Sie sich selbst mit viel finden entweder Try-Catch-Blöcken oder if-else-Blöcke in Ihrem Code oder neigen dazu, Ihre Methoden ziemlich lang zu sein, sollten Sie in eine größere Anzahl von kleineren Methoden, um den Code Refactoring. Die Absicht Ihrer Logik wird leichter sein, zu folgen -. Sowie einfacher zu Unit-Test

Ich denke, wenn Aussagen besser sind. Sie können nicht jede Zeile Code mit einem try..catch umgeben (gut Sie können, aber Sie sollten es nicht tun). Sie können einen Code-Block mit Try-Catch umgeben, aber nicht jede Zeile.

Und Ausnahmen Dinge verlangsamen.

Meine 2p: Mit try / catch ist am besten:

  • macht es absolut klar, andere Programmierer, die Sie Ausnahmebehandlung tun
  • der Compiler versteht, was Sie tun und können geeignetere Kompilierung-Kontrollen für Sie
  • ausführen

Nach meiner Erfahrung mit if-bedingten-Logik macht es schwieriger, Fehler zu unterscheiden von Business-Logik-Handling.

Von dem, was ich habe von erfahrenen Entwicklern und Analysten gesagt, try / catch mehr objektorientiert ist und wenn mehr Verfahrens.

Ich persönlich nicht.

Ich bin mir dessen bewusst, dass ein try / catch langsamer und verursacht eine Leistung getroffen, aber wenn ich ein Dutzend ifs verwenden werde zu validieren, bevor ich tun kann, was ich tun will, ich werde immer verwenden a try / catch auf der Anzahl der Codezeilen zu speichern.

Es macht mein Leben so viel einfacher, nichts zu validieren und wenn die Aussage nicht, nur das tun, was ich in meinem ‚else‘ Block getan hätte ... in meinem ‚fängt‘ Block.

Manchmal lege ich natürlich einige, wenn Anweisungen in einem try / catch, aber sowieso.

Ich benutze ein, wenn, wenn es nur eine kleine Anzahl von Dingen zu validieren (1 oder 2), bevor das tun, was ich tun muß.

Es gibt eine Sache, die nicht hier erwähnt hat.

Mit einer if-else-Anweisung, jedes Mal, wenn der Code ausgeführt wird, mindestens 1 der Bedingung garantiert ausgeführt zu bewerten. Ich bin sicher, dass wir alle wissen, wie eine if-else-elseif funktioniert, aber klar zu sein ... , wenn Teil der Anweisung wird immer ausgewertet werden, wenn es falsch ist, dann wird die folgende else-if wird ausgewertet, und so weiter, bis nur noch die sonst links ist zu bewerten.

So eine if-else-Anweisung wird Ihre Leistung auswirken. Nicht signifikant (in den meisten Fällen), aber es dauert CPU-Zeit, um die Auswertungen durchführen.

try-catch-Anweisungen und korrigiert mich wenn ich falsch liege, nicht zur Laufzeit in Betracht gezogen werden, bis sie erforderlich sind (das heißt eine Ausnahme ausgelöst). So einfach Ihren Code in einem Try-Catch-Verpackung wird nicht die Leistung beeinträchtigen, bis eine Ausnahme tatsächlich von ihr gefangen wird.

Es ist auch nicht der Haken, die die Leistung Hit, aber der Wurf verursacht.

Und ein wichtiger Punkt zu machen, versuchen Sie-catch-Anweisungen sollten NIE für bedingte Logik verwendet werden. Sie sollten nur verwendet werden für, was sie entworfen wurde: Ausnahmebehandlung

Ausnahmen Fangen ist wichtig, wenn Sie wissen, was mit ihnen zu tun. Wenn Sie keine Möglichkeit, richtig Umgang mit der Ausnahme, dann sollten Sie loslassen, für einige Codes weiter oben in der Kette kann eine bessere Art und Weise zu handhaben ist.

Die in der Regel eine gute Idee, eine Ausnahme Kurve an der absoluten Top-Ebene Ihrer Anwendung hat Ausnahmen zu fangen, bevor sie für den Benutzer sichtbar ist. In ASP.NET können Sie dies im Application_Error Ereignisse des global.asax tun. In anderen Sprachen / Umgebungen würden Sie so in Ihrer Haupt-Schleife tun, was auch immer das sein mag.

Aber beachten Sie, gibt es einige Ausnahmen, die immer am besten links abgefangene sind. Manchmal, wenn eine Ausnahme geschieht, ist es ein Indikator, dass der Zustand der Anwendung stark beeinträchtigt wurde und nicht vertraut werden kann. Die einzige sichere Sache zu tun ist, um zu töten und neu zu starten.

@PersonalPerson - Sorry, aber das ist nur faul Codierung. Anstatt einen Try-Catch verwenden, weil es zu viele gibt, wenn Aussagen, warum nicht Ihren Code Refactoring (d setzen Sie Ihre Validierungslogik in seiner eigenen Methode). Dadurch wird Ihr Code sauberer halten und besser lesbar und Best Practices für die Leistung erhalten.

Versuchen Sie niemals Ihren Code zu schreiben, die am wenigsten Anzahl der Linien zu erreichen. Dies wird immer schlecht enden. Natürlich können Sie einen elegantere Weg zu finden, etwas zu schreiben, die Ihre Coder-Freunde bei ooh und aah, aber es macht die Dinge nur weniger lesbar.

Ich schwöre, ich mit dem Code gearbeitet haben, und es machte mir Kopfschmerzen.

Ausnahmen zu verwenden ist universelle Methode anderen Teil des Codes zu informieren, dass etwas nicht stimmt in lose gekoppelten Art und Weise geschehen. Lassen Sie sich vorstellen, dass, wenn Sie durch den Einsatz einige außergewöhnlich gutem Zustand zu handhaben möchte, wenn .. nad sonst .. Sie benötigen einige beliebige Variablen und andere Sachen in anderen Teil des Codes einfügen, die wahrscheinlich leicht geführt würde bald nach Spaghetti-Code zu haben.

Lassen Sie neben mir vorstellen, dass Sie eine externe Bibliothek / Paket verwenden und es des Autors entschied in seinem / ihrem Code andere beliebige Art und Weise zu setzen falsche Zustände zu behandeln - es würde Sie zwingen, auf seine Art und Weise anzupassen, damit umzugehen - zum Beispiel Sie müssten überprüfen, ob bestimmte Methoden wahr oder falsch oder was auch immer zurückgibt.

Ausnahmen Verwendung macht die Handhabung Fehler viel einfacher - man muss nur davon ausgehen, dass, wenn etwas schief geht -. Der andere Code Ausnahme werfen, so dass Sie nur den Code in try-Block wickeln und mögliche Ausnahme auf eigene Art und Weise behandeln

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top