JavaScript中的Try…Catch 语句

使用try…catch语句可以测试一段代码是否出错。

——————————————————————————-
JavaScript – 出错捕捉
当浏览网页的时候,我们常常会见到一个JavaScript的警告窗口,告诉我们发生运行出错, 并提问你是否要“debug?”。 这种出错信息也许对开发者有用,但是对用户没有用处。 当用户看到这些错误时,他们通常会离开这个网页。

这一章我们就会学习怎样捕捉和处理这些JavaScript的出错信息,以防止因此而丢失用户。

有两种方法可以在网页中捕捉错误:

  • 使用 try…catch 语句 (适用于IE5以上, Mozilla 1.0, 和 Netscape 6)
  • 使用onerror 事件。 这是捕捉错误的旧的传统做法(自从Netscape 3以后就开始使用)

———————————————————————————-
Try…Catch语句
使用try…catch语句可以测试一段代码是否出错。 try 语句块中包含要执行的代码, catch 语句块中包含当出错时要执行的代码。

语法

try
{
//Run some code here
}
catch(err)
{
//Handle errors here
}

注意 try和catch 都是小写的。 使用大写字母会出错!

例1

以下例子包含的脚本原本应该在用户点击按钮时显示信息”欢迎访客!” 但是,因为函数message()中有一个书写错误, alert() 被错误的写为adddlert(), 因此将会产生一个JavaScript 出错:

<html>
<head>
<script type=”text/javascript”>
function message()
{
adddlert(“Welcome guest!”)
}
</script>
</head>
<body>
<input type=”button” value=”View message” onclick=”message()” />
</body>

</html>

为了在出错时有更适当的反应, 我们可以使用 try…catch 语句。

以 下例子将上面的 “欢迎访客!” 的例子改写为使用try…catch 语句。 因为alert() 拼写错误, 一个JavaScript出错发生,但是这次catch 语句块会捕捉到这个错误,并执行一段定制的代码来处理这个错误, 因此将会显示一条定制的信息来告诉用户发生了什么:

<html>
<head>
<script type=”text/javascript”>
var txt=””
function message()
{
try
{
adddlert(“Welcome guest!”)
}
catch(err)
{
txt=”There was an error on this page.\n\n”
txt+=”Error description: ” + err.description + “\n\n”
txt+=”Click OK to continue.\n\n”
alert(txt)
}
}
</script>
</head>
<body>
<input type=”button” value=”View message” onclick=”message()” />
</body>

</html>

例2

下 面这个例子使用一个确认对话框显示一条定制信息,告诉用户可以点击OK按钮继续浏览网页,或点击Cancel按钮来返回主页。 如果确认函数返回false, 用户点击的是Cancel, 那么代码将redirect用户。 如果确认函数返回的是true, 则代码什么也不做:

<html>
<head>
<script type=”text/javascript”>
var txt=””
function message()
{
try
{
adddlert(“Welcome guest!”)
}
catch(err)
{
txt=”本页面出错.\n\n”
txt+=”点击OK继续浏览本页,\n”
txt+=”或点击 Cancel 返回主页\n\n”
if(!confirm(txt))
{
document.location.href=”http://www.shorelinesolution.com/”
}
}
}
</script>
</head>
<body>
<input type=”button” value=”View message” onclick=”message()” />
</body>

</html>

—————————————————————————–
onerror事件

onerror事件的使用会在后面介绍。学习onerror之前首先要学习怎样使用throw 语句来生成一个例外(exception)。 throw 语句可与try…catch语句结合使用。

Leave a Reply

Your email address will not be published.