johny7: Ausgaben abfangen

Beitrag lesen

Moin allerseits,

Dann solltest du, wie ich schon vorschlug, die Ausgabe der Fehlermeldungen unterdrücken. Sie haben auf einem Produktivsystem sowieso nichts in der normalen Ausgabe zu suchen. Die Besucher können und sollen mit diesen Informationen nichts anfangen. Es sollte sowieso nur Laufzeitfehler auftreten, denn syntaktische hat man üblicherweise durch umfangreichen Tests ausgeschlossen. Die Ausgabe von Laufzeitfehlern lässt sich komplett unterdrücken (display_errors=off) - unabhängig davon, kann und sollte man sie ja loggen.

Ja, auf dem Produktivsystem. Während des Testens wäre es mir komfortabler, wenn es bei ungültiger Rückgabe einen Alert gibt mit dem Inhalt von str.

Eval kann nicht vorher wissen, dass es scheitern wird. Es wird also aufgerufen werden. Nur wird es nicht das erhoffte Ergebnis bringen. In deinem Fall ist das doch nur eine Variablenzuweisung. Bei einer solchen wird zuerst der zuzuweisende Ausdruck ausgwertet. Erst dann (und wenn das erfolgreich verlief) wird die Variable angelegt beziehungsweise deren Inhalt verändert, wenn sie schon vorher existierte.

In dem Fall wären Zeilenumbrüche im Code der Stringzuweisung. Das darf in Javascript nicht sein. Wenn allerdings der Inhalt in PHP vorbereitet wird und als Ajax-Response in str landet, dann ist dieser Fall nicht relevant. Bei einem eval() macht sich erst dann ein Problem bemerkbar, wenn aus dessen Sicht ungültige Syntax vorliegt. eval() bekommt ja nur den Inhalt des Strings zu sehen.

var str = '{
  foo: "bar
qux";
}';

Hier geht der String "bar qux" über zwei Zeilen und erzeugt einen Syntaxfehler.

D.h., wenn ich in str keinen Zeilenumbruch habe, wird auch kein Syntaxfehler erzeugt? Kann ich denn vor eval() in str einfach alle Umbrüche entfernen und dann so den Syntaxfehler umgehen?

Grüße, JN

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de