使用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语句结合使用。