Функция Error.popStackFrame
Обновлен: Ноябрь 2007
Выполняет обновление свойства fileName и lineNumber экземпляра Error, чтобы указать место возникновения, а не место создания ошибки. Эта функция используется при создании типов пользовательских ошибок.
errorInstanceVar.popStackFrame();
Заметки
Некоторые обозреватели задают поле fileName и lineNumber экземпляра Error на основе места создания экземпляра Error. Если экземпляр Error выводится вне области создавшей его функции, может возникнуть проблема.
Примечание. |
---|
Для вызова метода popStackFrame используются исключения, созданные Microsoft AJAX (библиотека). Метод popStackFrame следует вызывать только при определении собственных типов ошибок. |
При вызове метода popStackFrame экземпляра Error внутри создавшей его функции происходит обновление полей fileName и lineNumber экземпляра ошибки. Эти значения задаются на основе места возникновения ошибки, а не места создания экземпляра Error. Функция popStackFrame выполняет обновление полей fileName и lineNumber экземпляра Error на основании следующего фрейма в трассировщике стека обозревателя. При этом становятся доступны более точные сведения об ошибке, необходимые для отладки кода.
Описание
В следующем примере показана функция, которая создает экземпляр 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
Ссылки
Оснастки расширений типов ошибок