处理JavaScript导致的意外(转)

你了解“意外处理”这个概念吗?意外处理是高级编程语言(比如 C++、 Java 以及 VBScript)的一个重要功能,它负责控制当应用程序发生错误时,应该执行什么操作。独立的 JavaScript 并不支持意外处理,这导致一些编程人员更喜欢使用 VBScript 而不是 JavaScript。但是自从出现了IE5,JavaScript 的这方面功能得以补充且增强。通过向语法中增加意外处理功能,Microsoft 将 JavaScript 提升到 C++ 和 Java 的语言标准。我们有理由相信:一些 VBScript 编程人员将很快转移到 JavaScript 的阵营中。

   详细的内容是:

如何编写一个 JavaScript 导致意外的意外处理代码
如何编写一个用户导致意外的意外处理代码
如何在应用程序中编写用户导致意外的意外处理代码
JavaScript 、C++ 和 Java 的意外处理区别
JavaScript 和 VBScript 的意外处理区别
如何避开 JavaScript 和 VBScript 之间的矛盾
   在许多编程语言中,当试图执行一个非法指令时,代码都会导致一个运行时间意外。我们可能经历的一个最微不足道的非法操作就是“除以0”错误。JavaScript 不会执行这一操作,它将给结果变量赋值为无穷大。其它的非法操作对于其它编程语言也很普遍,包括 JavaScript。访问一个空指针或一个空对象也是一个例子,访问一个超出数组合法范围的数组元素是另一个例子。

   对于开发人员而言,通常是争取避免发生系统错误的。系统信息通常很含糊,一般的用户看不懂。事实上,系统错误将严重影响一个程序员的声誉,因为它们是臭虫(Bug)的清楚明白的证据。我们希望在代码中查找这些错误,在它们攻击操作系统之前发现它们以避免产生错误信息。在代码中查找意外会造成代码臃肿。当语言不支持意外处理时,将正常的代码流和错误查找混合在一起在所难免。以下的代码将查找两个错误 - 访问一个空对象和超出范围的数组元素:

var newObject = createObject(dataPiece1, dataPiece2, dataPiece3);
if (newObject == null) {
// do something here when the object was not created
...
}
else {
// getElementIndex return an index or -1 for an error
var index = newObject.getElementIndex();
if (index == -1) {
// handle the error case
...
}
else {
{
// finally, you can do something with index
...
}
   在 JavaScript 中支持意外处理的关键所在(在其它语言中也是一样,本文后面将做解释)是 try...catch 语句。 Try 这个关键字引导着一块可能会引起意外的正常处理代码,Catch 关键字引导着一块意外处理代码。一旦 try 这个区中引发了一个意外,程序流程的控制就切换到跟随它的第一个 catch 区域。但是一旦由 JavaScript 引发(这正是程序员所反对的),就没有机制能够断定错误的类型。以下是用来模拟上面流程的 try...catch 代码区:

try {
var newObject = createObject(dataPiece1, dataPiece2, dataPiece3);
var index = newObject.getElementIndex();
// do something with index
}
catch {
alert("System Error; Call your sw vendor");
}
   下面是另一个例子,可以在你的计算机上实际运行:

< HTML>
< HEAD>
< TITLE> example 1 < /TITLE>
< /HEAD>
< BODY>
< IMG SRC="doc.gif">
< SCRIPT LANGUAGE="JavaScript1.2">
< !--
try {
for (image=0; image < document.images.length + 2; image++) {
alert(document.images[image].border);
}
}

catch (kuku) {
alert("We have experienced a JavaScript error");
}
// --&gt
< /SCRIPT>
< /BODY>
< /HTML>
   这个例子中执行的意外是访问数组边界外的一个数组元素。在页面(doc.gif) 上,图形数是length (1),所以使用的最大指针是length+1 (2)。请注意传递给 catch (捕捉)区的变量kuku。JavaScript允许传递任何变量类型,在以后的页面中将做解释。虽然我们并不使用这个变量,但你必须要指定一个。[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9650775/viewspace-922862/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9650775/viewspace-922862/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值