try-catch in JavaScript : wie man die stack-trace oder Zeile Anzahl der ursprünglichen Fehler

Bei der Verwendung von TRY-CATCH in JavaScript, wie man die Zeilennummer der Zeile, die den Fehler verursacht?

Auf vielen Browsern den code unten funktioniert großartig und ich werde den stack-trace verweist auf die Zeile, die Ausnahme.

Einigen Browsern jedoch nicht "e.stack". IPhone safari, ist ein Beispiel.

Ist es irgendwie um die Zeilennummer zu erhalten, die die Arbeit für alle Browser?

try
{
   //lots of code here
   var i = v.WillGenerateError; //how to get this line number in catch??
   //lots of code here
} 
catch (e) 
{
     alert (e.stack)  //this will work on chrome, FF. will no not work on safari 
     alert (e.line)  //this will work on safari but not on IPhone
}

Vielen Dank!

UPDATE:
Ich fand, dass e.line funktioniert auf safari, aber noch nicht verfügbar auf dem IPhone, aktuelle iOS-version

  • Warum nicht einfach entfernen Sie die try...catch und schauen in welcher Zeile der standard-Fehlermeldung Punkte zu?
  • Ich brauche das try...catch-aus anderen Gründen. Zum Beispiel, ich möchte den Zustand zu erfassen, wenn der Fehler aufgetreten ist
  • Sind Sie sich, dass auf dem iPhone im moment? Sie sind auf der Suche nach mehr Informationen, um die Spur zu einem Fehler, es ist ein Weg, um mehr Informationen zu bekommen als Sie im moment haben, warum wollen Sie nicht, um es auszunutzen?
  • Zum Beispiel - ich würde gerne erfassen caurrent Werte in der Funktion alle Variablen genau, Wann der Fehler aufgetreten ist. Soweit ich weiß, kann ich dies nur tun, in fangen. Ich weiß, dass ich weglassen können, try ... catch alle zusammen, und verwenden Fenster.onerror, geben Sie mir die Nummer der Zeile, aber das ist nicht genug UND es ist auch nicht in allen Browsern verfügbar
  • Dann, nachdem Sie gefunden die Nummer der Zeile, setzen Sie die catch zurück...
  • he he, das ist gut für debugging-vorausgesetzt, Sie können replizieren den Fehler. nicht so gut, wenn man versucht, Informationen über einen Fehler, dass Sie nicht wissen, wie um sich zu reproduzieren. Jedem Fall davon ausgehen, dass ich MUSS try...catch
  • Gut, wenn du schreibst ein Fehler logging-Mechanismus, anstatt einfach Debuggen, hätte es wahrscheinlich geholfen, zu erwähnen, dass in der Frage.
  • Versuchen Sie stacktrace.js, das wurde genau für, die.
  • danke, aber: "Sie können auch in Ihrem eigenen Fehler zu bekommen, ein stacktrace nicht in IE oder Safari, wenn :(" Das ist genau meine situation 🙂
  • Ah stimmt, hatte nicht gesehen, dass 🙁

Schreibe einen Kommentar