八、嵌套例外处理
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页面真正地不出例外、善解人意。