编写可维护的javascript(十):抛出自定义错误

来源:互联网 发布:sql统计列 编辑:程序博客网 时间:2024/06/05 21:15

抛出错误的目的不是防止错误,而是在错误发生的时能更加容易地调试。


try-catch语句
Javascript提供了try-catch语句,它能在浏览器处理抛出的错误之前来解析它。
可能引发错误的代码放在try块中,处理错误的代码放在catch块中。如:

    try {        somethingThatMighCauseAnError();    } catch (ex) {        handleError(ex);    }

当在try块中发生了一个错误时,程序立刻停止执行,然后跳到catch块,并传入一个错误对象。
检查该对象可以确定从错误中恢复的最佳动作。

当然,还可以增加一个finally块。finally块中的代码不管是否有错误发生,最后都会被执行。如:

    try {        somethingThatMighCauseAnError();    } catch (ex) {        handleError(ex);    } finally {        continueDoingOtherStuff();    }

在某些情况下,finally块工作起来有点复杂。例如,如果在try块中包含了一个return语句,实际上它必须等到finally块中的代码执行后才能返回。由于这个原因,finally其实不常用,但如果处理错误必要,它仍然是处理错误的一个强大的工具。

*注:千万不要将try-catch中的catch块留空,你应该总是写点什么来处理错误。不要像下面这样做:

    try {        somethingThatMighCauseAnError();    } catch (ex) {        // 空        }

如果知道可能要发生错误,那肯定知道如何从错误中恢复。所以你应该是实实在在地在处理错误,而不是忽略它。
错误类型
所有错误的基本类型,就是Error错误,实际上引擎从来不会抛出该类型的错误。
ECMA-262规范指出了7中错误类型:Error , EvalError , RangeError , ReferenceError, SyntaxError,SyntaxError, TypeError, URIError。

文章内容从《编写可维护的Javascript》[美] Nicholas C. Zakas著 一书中总结写出。