JavaScript Anti-Silent-Techniken zur Anzeige von Fehlern

9

Was wäre ein guter Weg, um Fehler in JavaScript zu melden, anstatt sich auf Nullen zu verlassen, und undefiniert, wenn Fehler auftreten und eine Funktion nicht fortfahren kann. Ich kann mir drei Ansätze vorstellen:

  1. tue nichts
  2. eine Ausnahme auslösen
  3. bestätigen

Hier ist ein einfaches Beispielszenario - eine Funktion, die einem Benutzerkonto den übergebenen Betrag gutschreibt. Die Funktion credit ist Teil eines Account -Objekts.

Hier ist die naive Lösung.

%Vor%

Ein Hauptproblem bei diesem Ansatz sind ungültige Daten. Lassen Sie uns das beheben und verwenden Sie einen Rückgabewert, um anzuzeigen, dass der Vorgang fehlgeschlagen ist.

%Vor%

Dies ist eine Verbesserung gegenüber der vorherigen, aber der Client-Code muss den Rückgabewert überprüfen, um sicherzustellen, dass die Operation erfolgreich war. Dies zu tun für im Grunde jede Methode im System kann mühsam werden.

%Vor%

Ein dritter Ansatz, der dem zweiten ähnlich ist, ist das Auslösen einer Ausnahme. Da wir die Ausnahme selbst auslösen, könnte eine bestimmte Ausnahme eher als eine allgemeine Ausnahme ausgelöst werden.

%Vor%

Ein vierter Ansatz, der dem Auslösen von Ausnahmen ähnelt, besteht darin, Assertionen in Ihrem Code zu verwenden. Ein Nachteil im Vergleich zu dem obigen Ansatz besteht darin, dass die Möglichkeit, benutzerdefinierte Ausnahmen auszulösen, verloren geht, da die Assertion generisch ist. Es ist jedoch immer noch möglich, das Objekt an jeden Assert-Aufruf zu übergeben.

%Vor%

Eine globale assert -Funktion ist einfach zu schreiben und macht den Code etwas kürzer.

%Vor%

Aus diesen Ansätzen heraus wäre das ein guter Weg, um mit unerwarteten Werten und unglücklichen Pfaden umzugehen. Gibt es andere Ansätze, die hier nicht erwähnt werden, die nützlich sein könnten?

    
Anurag 17.07.2010, 01:16
quelle

2 Antworten

2

Betrachten Sie ein clientseitiges Protokollierungs-Framework, um Fehler zu melden, z. B. Log4js . Man kann Nachrichten (d. H. Info, debug, warn, error) im Browser protokollieren oder Nachrichten an den Server über Ajax persistieren, abhängig von der Anwendung.

Die Log4js-Site bietet auch eine andere Liste von JavaScript-Protokollierungs-Frameworks .

Ein guter Ansatz wäre es, bei Verwendung des benutzerdefinierten Ausnahmebeispiels die Ausnahme auszulösen und den Fehler nach eigenem Ermessen zu protokollieren.

    
Chocula 17.07.2010, 01:58
quelle
2
  

Ein Manko im Vergleich zu oben   Ansatz ist das, seit die Behauptung ist   generisch verlieren wir die Fähigkeit zu werfen   benutzerdefinierte Ausnahmen

Nicht unbedingt:

%Vor%

Konstruktoren sind Funktionen. Funktionen sind erstklassige Werte. Fühlen Sie sich frei, sie herumzugeben.

    
Weston C 17.07.2010 01:39
quelle