Zeichenketten anstelle von Fehlern werfen
Da können wir werfen nichts mit der throw
- Schlüsselwort in Javascript, können wir nicht nur werfen eine Fehlermeldung string direkt?
Kennt jemand irgendwelche Haken?
Lassen Sie mich hinzufügen, einige Hintergrundinformationen zu dieser: Sehr oft, in der JavaScript-Welt, die Menschen verlassen sich auf parameter überprüfen im Gegensatz zur Verwendung der try-catch-Mechanismus, so macht es Sinn, nur werfen schwerwiegende Fehler mit throw
. Dennoch, um in der Lage sein zu fangen einige system-Fehler, die ich habe zu verwenden eine andere Klasse für meine eigenen Fehler und anstatt eine Unterklasse von Error, ich glaube ich sollte einfach String verwenden.
InformationsquelleAutor der Frage billc.cn | 2012-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist okay zu werfen, was Sie wollen, aber Bedenken Sie, dass, wenn der Haken ist, außerhalb des eigenen code, es könnte erwarten, dass eine vollständige Fehler-Instanz und nicht als einfacher string.
InformationsquelleAutor der Antwort lanzz
Ja, Sie werfen kann andere Werteaber es ist nicht eine gute Praxis.
Ein string ist nicht ein Fehler-Objekt und vermittelt nicht jede nützliche debugging-Informationen. Devtools Sie verlassen sich auf, wie Sie die Datei und Zeile, wo der Fehler erzeugt wurde, wird der stacktrace bei der
throw
Lage etc, die verfügbar sind, wie Eigenschaften aufError
Objekte.Wann immer Sie denken, zu werfen Sie einen primitiven string-Wert, werfen Sie einen
new Error("<the string>")
statt.InformationsquelleAutor der Antwort Bergi
Können Sie werfen Fehler mit Nachrichten, wissen Sie.
Aber Sie kann tatsächlich werfen Saiten:
InformationsquelleAutor der Antwort MaxArt
Wie andere erwähnt haben, wenn Sie nicht werfen ein Error-Objekt, dann müssen Sie try/catch-Blöcke zum abfangen dieser Objekte und entsprechend behandelt oder sonst in einer Welt von Schmerz für die Fehlersuche.
Jedoch, wenn es um das werfen von Fehlern für nicht-Fehlerbehandlung Zwecke, wie die controlling-Programm fließen, dies kann eine hilfreiche Art und Weise zu nutzen
throw
ohne Fehler.Bei der Verwendung von wirft, um den Programmablauf Steuern, es kann ineffizient sein, in jeder Sprache, da die Laufzeit oft eine Menge tun, schweres heben, sich zu entspannen Aufruf Stapel Informationen und serialisieren Sie die Daten so verfügbar sein, um die user-land-Bereich. Durch die Vermeidung von Fehler, Erstellung, können Sie vermeiden, diese Leistung Treffer. Der Schlüssel ist, dass Sie müssen einen handler oben auf dem Aufruf-stack, der weiß, wie mit dieser situation umzugehen. Zum Beispiel, wenn Sie
throw {isHardStop: true, stopCode: SOME_CODE}
- und design-Handler, um dies zu erkennen, können Sie in der Lage sein zu glätten, aus einigen Ihrer code oder wählen Sie sauberer syntax.Den handler für diesen Fall könnte der Leiter strukturiert werden wie:
InformationsquelleAutor der Antwort Timothy C. Quinn