JavaScript容错例外处理第2/2页
更新时间:2008年06月08日 20:03:45 作者:
程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(exception handlers)。
六、定制例外信息
上述的六种Error类型基本上覆盖了脚本程序运行时所可能发生的错误。除了这些类型以外,我们还可以使用Error构造器来自定义例外类型,其语法如下:
myError = new Error(msg)
其中msg参数表示所定义的新例外的message属性值。同时,我们还可以创建新的对象类型以作为Error的子类型:
function MyError(msg) {
this.name = "MyError"
this.message = msg
}
MyError.prototype = new Error;
然后,我们就可以创建自定义错误子类的实例:
myError = new MyError("My error message")
七、触发例外
创建一个Error对象后,就可以使用throw语句来触发相应的例外。Throw的语法如下:
throw errObj
errObj必须是一个Error对象或者Error的子类型。在try块代码中触发一个例外后,控制将直接转入catch块。
下面的代码中,在try块中触发了一个例外,设置例外信息为“oops”,然后控制转移到catch块:
var s
try {
s = "one "
throw new Error("oops")
s += "two"
} catch(err) {
s += err.message
}
s += " three"
alert(s)
运行后出现如下的提示框:
编写代码来触发例外的优点很多,比如有利于自定义错误类型,快速转入catch块执行,以及下面要介绍的在嵌套例外中将错误传递到外层。
八、嵌套例外处理
JavaScript支持多层次的嵌套例外处理。一般情况下,我们可以在内部例外处理的catch代码块中捕捉并处理错误,然后再次触发例外,这样就可进一步在外部例外处理的catch代码块中做更加深入的处理。下面来看看一个嵌套例外处理的例子:
var inner;
var outer;
try {
document.writeln("Beginning outer try block, no exceptions yet");
try{
document.writeln("Beginning inner try block, no exceptions yet");
// 生成一个引用错误
document.writeln(undefinedVariable)
document.writeln("Finished inner try block with no exceptions");
} catch(inner) {
// 内部例外处理
document.writeln("Exception caught, beginning inner catch block");
document.writeln("Error type: " + inner.name);
document.writeln("Error message: " + inner.message);
throw inner;
document.writeln("No exceptions thrown in inner catch block");
} finally {
document.writeln("Executing inner finally block");
}
document.writeln("Finished outer try block with no exceptions");
} catch(outer) {
// 外部例外处理
document.writeln("Exception caught, beginning outer catch block");
document.writeln("Error type: " + outer.name);
document.writeln("Error message: " + outer.message);
} finally {
document.writeln("Executing outer finally block");
}
执行后的输出结果如下:
Beginning outer try block, no exceptions yet
Beginning inner try block, no exceptions yet
Exception caught, beginning inner catch block
Error type: ReferenceError
Error message: undefinedVariable is not defined
Executing inner finally block
Exception caught, beginning outer catch block
Error type: ReferenceError
Error message: undefinedVariable is not defined
Executing outer finally block
嵌套例外处理的好处在于使我们能够很好地分阶段处理错误,内部例外处理可以负责解决由错误引发的脚本代码问题,外部例外处理则用于负责提供给用户的反馈信息或者对例外信息进行日志记录。
九、结语
本文详细讨论了JavaScript语言的一个很重要的特征“例外处理”,Web开发人员应该很好地掌握它并在实际应用中灵活处理,从而使包含脚本代码的HTML页面真正地不出例外、善解人意。
相关文章
js window.addEventListener实际案例
window.addEventListener 是 JavaScript 中的一个方法,用于向指定对象添加事件监听器,下面通过本文给大家介绍js window.addEventListener的实际案例,感兴趣的朋友跟随小编一起看看吧2024-12-12
在javascript中,null>=0 为真,null==0却为假,null的值详解
这篇文章主要介绍了在javascript中,null>=0 为真,null==0却为假,null的值详解的相关资料,需要的朋友可以参考下2017-02-02


最新评论