首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

3.10  处理错误

即使你有多年使用计算机的经验,但是你站点的许多用户很可能没什么经验。因此,应该向他们提供有意义的错误消息,而不是大多数浏览器在拒绝用户的操作时返回的莫名其妙的消息。脚本3-13演示如何使用JavaScript的try/throw/catch命令产生友好的有用的消息。我们将这个功能放在一个简单的平方根计算器中。

脚本3-13  这个脚本用JavaScript适当地处理错误

window.onload = initAll;

function initAll() {

   var ans = prompt("Enter a number","");

   try {

     if (!ans || isNaN(ans) || ans<0) {

       throw new Error("Not a valid number");

     }

     alert("The square root of " + ans + " is " + Math.sqrt(ans));

   }

   catch (errMsg) {

     alert(errMsg.message);

   }

}

适当地处理错误的步骤如下:

(1) var ans = prompt("Enter a number", "");

这是一个普通的提示,我们把它存储在ans变量中供以后使用。在这个示例中,我们希望用户输入一个数字。如果用户确实输入了合适的数字,JavaScript就会显示他们输入的数字的平方根。

(2) try {

但是,如果他们没有输入数字(如图3-8所示),那么代码能够捕捉到这一错误并显示有意义的消息。即使用户在要求他们输入数字时输入了单词,我们也能够有礼貌地发出提示。首先使用try命令。在这块代码中,我们检查用户的输入是否有效。

图3-8  我们要求用户输入数字,但是用户可能输入任何东西,比如文本

(3) if (!ans || isNaN(ans) || ans<0) {

throw new Error("Not a valid number");

}

我们要关注三种情况:根本没有输入;用户输入了某些东西,但不是数字;输入的是数字,但它是负数(因为负数的平方根是虚数,这超出了这个示例的范围)。如果!ans是true,就意味着用户没有输入任何东西。内置的isNaN()方法检查传递给它的参数是否“不是数字(Not a Number)”。如果isNaN()返回true,就说明输入的内容是无效的。如果ans小于0,它就是负数。对于以上任何情况,都希望抛出一个错误,它指出“Not a valid number(不是有效的数字)”。当抛出错误之后,JavaScript跳出try块并寻找对应的catch语句。因此,try块中其余的代码都被跳过。

(4) alert("The square root of " + ans + " is " + Math.sqrt(ans));

如果输入了有效的内容,就显示平方根,如图3-9所示。

图3-9  这是输入有效的数字时脚本的结果

(5) }

这个后花括号结束try块。

(6) catch (errMsg) {

alert(errMsg.message);

}

这是出现错误时要使用的catch语句。error作为参数传递给它,它显示错误的message部分(图3-10)。如果没有抛出错误,catch中的代码就不会执行。

图3-10  如果输入了错误的数据,就告诉用户

ü提示

q 还有一个可选部分:最后的{}块。这个部分放在catch后面,无论try块是否抛出错误,这里包含的代码都应该执行。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论