次の方法で共有


Error.popStackFrame 関数

更新 : 2007 年 11 月

Error インスタンスの fileName プロパティと lineNumber プロパティを更新し、エラーが作成された場所ではなく、エラーがスローされた場所を示します。この関数は、カスタム エラー型を作成する場合に使用します。

errorInstanceVar.popStackFrame();

解説

一部のブラウザは、Error インスタンスの fileName フィールドと lineNumber フィールドを Error インスタンスが作成された場所に基づいて設定します。このことは、Error インスタンスがそれを作成した関数のスコープ外でスローされた場合に問題になります。

Bb384006.alert_note(ja-jp,VS.90).gifメモ :

popStackFrame メソッドは、Microsoft AJAX Library によってスローされる例外で呼び出されます。popStackFrame メソッドを呼び出すのは、独自のエラー型を定義している場合のみです。

Error インスタンスの popStackFrame メソッドを、そのインスタンスを作成した関数内で呼び出すと、エラー インスタンスの fileName フィールドと lineNumber フィールドが更新されます。これらの値は、Error インスタンスが作成された場所ではなく、エラーがスローされた場所に基づいて設定されます。popStackFrame 関数は、Error インスタンスの fileName フィールドと lineNumber フィールドを、ブラウザのスタック トレースの次のフレームに基づいて更新します。これにより、コードをデバッグする際に、より正確なエラー情報を得られます。

説明

次の例は、Error インスタンスを作成し、それを呼び出し元コードに返す関数を示しています。呼び出し元コードは、それを受け取って Error インスタンスをスローします。Error インスタンスはその作成元関数のスコープ外でスローされているため、popStackFrame メソッドは、エラーを作成した関数から、エラーを返す前に呼び出されます。

コード

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


参照

概念

AJAX アプリケーションのデバッグとトレースの概要

参照

Error 型拡張

その他の技術情報

言語リファレンス