2009-10-15 15 views
5

Das ist ziemlich IE verwandt, weil IE die Umgebung ist, die ich verwende, um das zu testen, aber ich möchte wissen, ob Sie die Relevanz der Eigenschaften des Fehlerobjekts beeinflussen können, wenn Sie eine werfen Error. Betrachten Sie das folgende Javascript:Fehler in Javascript mit Fehlerobjektrelevanz werfen

function MyClass (Arg1, Arg2) // Line 5 of my.js 
{ 
    if (typeof Arg1 != "string") 
     throw new Error("Invalid argument passed for MyClass"); 
    // Do some other stuff here 
} 

Weiter unten Ihren Code Sie

var myvar = new MyClass(100, "Hello"); // Line 3201 of my.js 

So die oben haben würde einen Fehler werfen, aber der Fehler in der Debug-Informationen berichtet, würde die Fehler zeigen, wird auf der Leitung geworfen 9 von my.js anstelle von Zeile 3201. Können Sie das mit Standardmethoden ändern?

Antwort

2

Was Sie eigentlich suchen, ist eine Stack-Trace für den Fehler. Es gibt keine Standards dafür, aber die meisten Browser bieten einige Mittel zur Entdeckung. Eine schnelle Suche kommt mit diesem js stack trace Beispiel.

+0

Danke für Ihre Antwort, ich habe in Stack-Tracing ohne einen Debugger suchen und fand einen sehr nützlichen Link http://eriwen.com/javascript/js-stack-trace/. Ich baue Windows Desktop Gadgets (auf IE gebaut) und anstatt Visual Studio zum Debuggen zu verwenden, behandle ich normalerweise nur window.onerror und warnt mit der Zeile/Fehlermeldung, damit ich direkt im Code darauf zugreifen kann - es ist schnell und einfach genug aber ich kann sehen, wie der Stapel noch nützlicher sein könnte. –

+0

Nur realisiert, dass Ihr Link der gleiche war - whoops :) –

+0

Markierte dies als die Antwort, weil es der erste war. Danke :) –

2

In Firefox können Sie die Stack-Eigenschaft verwenden, wenn Sie den Fehler abfangen. In anderen Browsern können Sie die Nachrichteneigenschaft verwenden.

Werfen Sie einen Blick auf diesen Link, wie Sie die stacktrace fangen.

+0

Ich fand diesen Link früher und es ist ziemlich interessant, danke. –