您的位置:首页 > Web前端 > JavaScript

Asp.net AJAX JavaScript 基本类型扩展(4)——Error 类型及其扩展

2007-08-06 16:34 736 查看
参考:
JScript 语言参考
http://msdn2.microsoft.com/en-us/library/b8664205-d28e-4cde-bd76-69173ff72dea
Asp.net AJAX 在线文档
http://www.asp.net/AJAX/Documentation/Live/ClientReference/Global/JavascriptTypeExtensions/Erro

rTypeExt/default.aspx

Asp.net AJAX JavaScript Error 类型扩展

Sys Exceptions 异常参考
http://www.asp.net/AJAX/Documentation/Live/ClientReference/Global/JavascriptTypeExtensions/Erro

rTypeExt/ErrorArgumentFunc.aspx

argument 方法
创建 Sys.ArgumentException 异常!

argumentNull 方法
创建 Sys.ArgumentNullException 异常!

例:
function validateNumberRange(input, min, max)
{

// Verify the required parameters were defined.
if (input === undefined)
{
// Throw a standard exception type.
var err = Error.argumentNull("input", "A parameter was undefined.");
throw err;
}
else if (min === undefined)
{
var err = Error.argumentNull("min", "A parameter was undefined.");
throw err;
}
else if (max === undefined)
{
var err = Error.argumentNull("max", "A parameter was undefined.");
throw err;
}
else if (min >= max)
{
var err = Error.invalidOperation("The min parameter must be smaller than max

parameter.");
throw err;
}
else if (isNaN(input))
{
msg = "A number was not entered. ";
msg += String.format("Please enter a number between {0} and {1}.", min, max);

var err = Error.create(msg);
throw err;
}
else if (input < min || input > max)
{
msg = "The number entered was outside the acceptable range. ";
msg += String.format("Please enter a number between {0} and {1}.", min, max);

var err = Error.create(msg);
throw err
}

alert("The number entered was within the acceptable range.");
}

var input = undefined;
var min = -10;
var max = 10;

// Result: A thrown ErrorArgumentNull exception with the following Error object message:
// "Sys.ArgumentNullException: A parameter was undefined. Parameter name: input"
validateNumberRange(input, min, max);

argumentOutOfRange 方法
创建 Sys.ArgumentOutOfRangeException 异常!

argumentType 方法
创建 Sys.ArgumentTypeException 异常!

argumentUndefined 方法
创建 the Sys.ArgumentUndefinedException 异常!

create 方法
创建自定义的错误异常。

例:
function throwAnError(input)
{

if (input === undefined)
{
// Throw a standard exception type.
var err = Error.argumentNull("input", "A parameter was undefined.");
throw err;
}
else if (input === "Test1")
{
// Throw a generic error with a message.
var messageVar = "A test message.";
var err = Error.create(messageVar)
throw err;
}
else if (input === "Test2")
{
// Throw a generic error with a message and associated errorInfo object.
var messageVar = "This error contains an additional custom errorInfo object";
var errorInfoObj = { name: "SomeNamespace.SomeExceptionName", someErrorID: "436" };
var err = Error.create(messageVar, errorInfoObj);
throw err;
}
alert("No error occured.");
}

throwAnError("Test2");

invalidOperation 方法
创建 Sys.InvalidOperationException 异常!

notImplemented 方法
创建 Sys.NotImplementedException 异常!

parameterCount 方法
创建 the Sys.ParameterCountException 异常!

<!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>Sample</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager1">
</asp:ScriptManager>

<script type="text/javascript">

function throwAnError(a, b)
{
if (arguments.length !== arguments.callee.length)
{
// Throw a standard exception.
var err = Error.parameterCount("Invalid number of parameters

attempted.");
throw err;
}
alert("No error occured.");
}

// Result: A Thrown Sys.ParameterCountException with the following message:
// Error: Sys.ParameterCountException: Invalid number of parameters attempted.
throwAnError(1,2,3,4);

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

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>

Error 基本类型

Error 对象
保存有关错误的信息。

var newErrorObj = new Error(

)
var newErrorObj = new Error(
number
)
var newErrorObj = new Error(
number,
description
)

Error 对象的构造函数语法有以下部分:

参数
number

与错误相联的数字值。如果省略则为零。

description

描述错误的简短字符串。如果省略则为空字符串。

说明
每当产生运行时错误,就产生 Error 对象的一个实例以描述错误。该实例有两个固有属性保存错误的描述(

description 属性)和错误号(number 属性)。

错误号是 32 位的值。高 16 位字是设备代码,而低字是实际的错误代码。

Error 对象也可以用如上所示的语法显式创建,或用 throw 语句抛掉。在两种情况下,都可以添加选择的任

何属性,以拓展 Error 对象的能力。

典型地,在 try...catch 语句中创建的局部变量引用隐式创建的 Error 对象。因此,可以按选择的任何方

法使用错误号和描述。

下面的例子演示了隐式创建 Error 对象的使用:

try
{ x = y // 产生错误。
}catch(e){ // 创建局部变量 e。
response.write(e) // 打印 "[object Error]".
response.write(e.number & 0xFFFF) // 打印 5009。
response.write(e.description) // 打印 "'y' is undefined".
}
方法
Error 对象没有方法。

属性
description 属性 | number 属性

description 属性
返回或设置与特定错误相联系的描述字符串。

object.description [= stringExpression]

description 属性的语法组成部分如下:

参数
object

必选项。Error 对象的任意实例。

stringExpression

可选项。包含错误描述的字符串表达式。

说明
description 属性包含与特定错误相联系的错误信息字符串。使用包含在这个中的值,来警告用户发生了一

个不能或不想处理的错误。

下面的例子举例说明了 description 属性的使用:

try
x = y // 产生错误。
catch(var e){ // 创建局部变量 e。
document.write(e) // 打印 "[object Error]".
document.write((e.number & 0xFFFF)) // 打印 5009.
document.write(e.description) //打印 "'y' is undefined".
}

number 属性
返回或设置与特定错误相联系的数字值。Error 对象的默认是 number。

object.number [= errorNumber]

参数
object

任意 Error 对象的实例。

errorNumber

表示一个错误的整数。

说明
错误号是一个 32 位的值。高 16 位字是设施代码,而低字才是真正的错误代码。

下面的例子举例说明了 number 属性的用法:

try
x = y // 产生错误。
catch(var e){ // 创建全局变量 e。
document.write(e) // 打印 "[object Error]".
document.write(e.number>>16 & 0x1FFF) // 打印设施代码 10。
document.write(e.number & 0xFFFF) // 打印错误代码 5009。
document.write(e.description) // 打印 "'y' is undefined".
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐