Compartir a través de


Error.popStackFrame (Función)

Actualización: noviembre 2007

Actualiza las propiedades lineNumber y fileName de una instancia de Error para indicar dónde se produjo el error en lugar de dónde se creó el error. Utilice esta función si va a crear tipos de error personalizados.

errorInstanceVar.popStackFrame();

Comentarios

Algunos exploradores establecen los campos lineNumber y fileName de una instancia de Error en función del lugar donde se creó la instancia de Error. Esto puede ser un problema si una instancia de Error se inicia fuera del ámbito de la función que la creó.

Nota

El método popStackFrame se llama cuando se producen excepciones iniciadas por Microsoft AJAX Library. Llame al método popStackFrame únicamente si va a definir sus propios tipos de error.

Al llamar al método popStackFrame de la instancia de Error dentro de la función que la creó, se actualizan los campos lineNumber y fileName de la instancia de error. Sus valores se establecen en función del lugar donde se produjo el error y no de donde se creó la instancia de Error. La función popStackFrame actualiza los campos lineNumber y fileName de una instancia de Error en función del siguiente marco del seguimiento de la pila del explorador. Esto proporciona información de error más precisa para depurar el código.

Description

En el ejemplo siguiente se muestra una función que crea una instancia de Error y la devuelve al código que la invocó, qué inicia a su vez la instancia de Error. Como la instancia de Error se inicia fuera de la función que la creó, se llama al método popStackFrame desde la función que generó el error y antes de que se devuelva el error.

Código

<!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>


Vea también

Conceptos

Información general sobre la depuración y la traza de aplicaciones habilitadas para AJAX

Referencia

Extensiones de tipo de error

Otros recursos

Referencia del lenguaje