你了解“意外处理”这个概念吗?意外处理是高级编程语言(比如 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");
}
// -->
< /SCRIPT>
< /BODY>
< /HTML>
这个例子中执行的意外是访问数组边界外的一个数组元素。在页面(doc.gif) 上,图形数是length (1),所以使用的最大指针是length+1 (2)。请注意传递给 catch (捕捉)区的变量kuku。JavaScript允许传递任何变量类型,在以后的页面中将做解释。虽然我们并不使用这个变量,但你必须要指定一个。[@more@]
详细的内容是:
如何编写一个 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");
}
// -->
< /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/