Freigeben über


Error.popStackFrame-Funktion

Aktualisiert: November 2007

Aktualisiert die fileName-Eigenschaft und die lineNumber-Eigenschaft einer Error-Instanz, um anzugeben, an welcher Stelle der Fehler ausgelöst und nicht wo er erzeugt wurde. Verwenden Sie diese Funktion, wenn Sie benutzerdefinierte Fehlertypen erstellen.

errorInstanceVar.popStackFrame();

Hinweise

Einige Browser legen das fileName-Feld und das lineNumber-Feld einer Error-Instanz basierend auf dem Erstellungsort der Error-Instanz fest. Dies kann zu Problemen führen, wenn eine Error-Instanz außerhalb des Bereichs der Funktion ausgelöst wird, von der sie erstellt wurde.

Tipp

Die popStackFrame-Methode wird von Ausnahmen aufgerufen, die von Microsoft AJAX Library ausgelöst werden. Sie rufen die popStackFrame-Methode nur auf, wenn Sie eigene Fehlertypen definieren.

Wenn Sie die popStackFrame-Methode der Error-Instanz innerhalb der Funktion aufrufen, von der sie erstellt wurde, werden das fileName-Feld und das lineNumber-Feld der Fehlerinstanz aktualisiert. Ihre Werte werden auf der Grundlage der Stelle festgelegt, an der der Fehler ausgelöst wurde, und nicht ausgehend davon, wo die Error-Instanz erstellt wurde. Die popStackFrame-Funktion aktualisiert das fileName-Feld und das lineNumber-Feld einer Error-Instanz basierend auf dem nächsten Fenster in der Stapelüberwachung des Browsers. Auf diese Weise erhalten Sie genauere Fehlerinformationen zum Debuggen von Code.

Beschreibung

Das folgende Beispiel zeigt eine Funktion, die eine Error-Instanz erstellt und an den Code zurückgibt, durch den sie aufgerufen wurde, der wiederum die Error-Instanz auslöst. Da die Error-Instanz außerhalb der Funktion ausgelöst wird, von der sie erstellt wurde, wird die popStackFrame-Methode von der Funktion aufgerufen, die den Fehler generiert hat, bevor der Fehler zurückgegeben wird.

Code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
       <asp:ScriptManager runat="server" ID="ScriptManager1">
       </asp:ScriptManager>
       <script type="text/javascript">

         // Register classes to test.
         Type.registerNamespace('Samples');

         Samples.A = function(){}
         Samples.A.registerClass('Samples.A');

         Samples.B = function()
         {
            Samples.B.initializeBase(this);
         }
         Samples.B.registerClass('Samples.B');


        // Test the type, create an Error in a function and return it.
        function validate(testType, expectedType) {
            if (!testType.isInstanceOfType(expectedType))
            {
                var e = Error.create("Invalid type.");

                // Ensure that the Error tracks where it is
                // thrown rather than where it was created.
                e.popStackFrame();

                return e;
            }
        }

        // Cause validate() to create and return an error.
        var a = new Samples.A();
        var b = new Samples.B();
        var err = validate(Samples.A, b);

        if (err)
        {
            throw err;
        }

        alert("No error occured.");

       </script>
    </form>
</body>
</html>


Siehe auch

Konzepte

Übersicht über das Debuggen und die Ablaufverfolgung von AJAX-Anwendungen

Referenz

Erweiterungen des Typs Error

Weitere Ressourcen

Sprachreferenz