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

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


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著 一书中总结写出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值