开发中发现后台人员经常使用 try…catch…finally 来响应错误事件,即错误处理(exception handlers)。但是在前端代码中很少用到这个方法。这篇文章就详细介绍一下 try…catch…finally 用法。
一、什么是错误处理
当JavaScript程序在运行中发生了诸如数组索引越界、类型不匹配或者语法错误时,JavaScript解释器就会引发错误处理。ECMAScript定义了六种类型的错误,除此之外,我们可以使用Error对象和throw语句来创建并引发自定义的错误处理信息。
二、错误处理技术的优点
通过运用错误处理技术,我们可以实现用结构化的方式来响应错误事件的发生,让错误处理代码与正常脚本代码科学分离,最终使我们能够集中精力编写完成主要功能的核心程序。
三、使用 try…catch…finally 执行错误处理
在JavaScript中,我们使用try…catch…finally语句来执行错误处理,即通过它来捕捉错误发生后导致的例外或者执行throw语句产生的例外。它的基本语法如下:
try {
// 此处是可能产生例外的语句
} catch(error) {
// 此处是负责例外处理的语句
} finally {
// 此处是出口语句
}
上述代码中,try块中的语句首先被执行。如果运行中发生了错误,控制就会转移到位于catch块中语句,其中括号中的error参数被作为例外变量传递。否则,catch块的语句被跳过不执行。无论是发生错误时catch块中的语句执行完毕,或者没有发生错误try块中的语句执行完毕,最后将执行finally块中的语句。
四、try...catch...finally的变形
try…catch…finally语句有两种变形应用,即try…catch或者try…finally。
try…catch这种结构最常见,它的执行过程是:当没有例外发生执行完毕try块语句后或者发生例外执行完catch块语句后,控制将转移到整个try…catch结构后面的语句。请看下面的例子:
try {
// 此处是可能产生例外的语句
} catch(err) {
// 此处是负责例外处理的语句
}
如果是try…finally结构,那么当发生例外时,由于没有catch块语句来捕捉错误,所以最终finally块的语句也不会被执行。因此,这种结构在实际应用中很少见。