美文网首页
【五十】错误传播

【五十】错误传播

作者: 八宝君 | 来源:发表于2017-02-07 15:22 被阅读0次

如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢?

function getLength(s) {
    return s.length;
}

function printLength() {
    console.log(getLength('abc'));  // 3
    console.log(getLength(null));  // Error!
}

printLength();

如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,如果外层函数也没有捕获,该错误会一直沿着函数调用链往上抛出,直到被JavaScript引擎捕获,代码终止执行。

所以,我们不必在每一个函数内部捕获错误,只需要在合适的地方来个统一捕获,一网打尽:

function main(s) {
    console.log('BEGIN main()');
    try {
        foo (s);
    } catch (e) {
        alert('出错了: ' + e);
    }
    console.log('END main()');
}

function foo(s) {
    console.log('BEGIN foo()');
    bar(s);
    console.log('END foo()');
}

function bar(s) {
    console.log('BEGIN bar()');
    console.log('length = ' + s.length);
    console.log('END bar()');
}

main(null);

执行之后:

会有弹窗提示 控制台输出

bar()函数传入参数null时,代码会报错,错误会向上抛给调用方foo()函数,foo()函数没有try ... catcht语句,所以错误继续向上抛给调用方main()函数,main()函数有try ... catch 语句,所以错误最终在main()函数被处理了。

至于在哪些地方捕获错误比较合适,需要视情况而定。

相关文章

  • 【五十】错误传播

    如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢? 如果在一个函数内部发...

  • 5、错误处理

    try{...}catch(e){...}finally{...} 错误传播 如果在一个函数内部发生了错误,它自身...

  • (错误处理)错误传播+异常错误处理

    错误分两种,一种是程序写的逻辑不对,导致代码执行异常。例如: 一种是执行过程中,程序可能遇到无法预测的异常情况而报...

  • Java编程常见问题汇总(二)

    重复包装RuntimeException 错误的写法: 正确的写法: 不正确的传播异常 错误的写法: 主要是没有正...

  • Swift编程十八(错误处理)

    案例代码下载 错误处理 错误处理是响应程序中的错误条件并从中恢复的过程。Swift为在运行时抛出,捕获,传播和操纵...

  • 第17章:错误处理

      错误处理是响应程序中的错误并从中恢复的过程。Swift为在运行时抛出,捕获,传播和操纵可恢复的错误提供了一流的...

  • 17 Error Handling 错误处理

    错误处理是响应程序中的错误条件并从中恢复的过程。Swift为在运行时抛出、捕获、传播和操作可恢复错误提供了一流的支...

  • 【区块链科普03】区块链与比特币的关系

    对于比特币与区块链,有两种常见的错误概念,在业界广为传播。 错误观念一:比特币与区块链是父与子的关系。 错误观念二...

  • 8.16商学院-媒体

    现在就是互联网传播高发时期,如果你跟互联网脱轨那么你要多奋斗五十年。也就是说媒体传播对任何事跟人都是非常重...

  • 《弱传播》——厦门大学邹振东教授

    如果选择了错误的传播方法,最终走向的是目标的反面。 许多人都信奉一个原则:先有实力再进行传播。可是人类的出生,证明...

网友评论

      本文标题:【五十】错误传播

      本文链接:https://www.haomeiwen.com/subject/joxmittx.html