任何错误处理策略中最重要的一部分,就是确定错误是否致命,

非致命错误,可以根据下列一或多个条件来确定:
不影响用户的主要任务
只影响页面的一部分
可以恢复
重复相同操作可以消除错误


致命错误,可以通过以下一或多个条件来确定:
应用程序根本无法继续运行;
错误明显影响到了用户的主要操作
会导致其他连带错误

设计良好的代码,可以做到应用程序某一部分发生错误不会不必要地影响到另一个实际上毫不相干的部分。

for(var i=0; i<mods.length; i++){
    mods[i].init();
}

表面上看,这些代码没什么问题:依次对每个模块调用init()方法。问题在于,任何模块的init()方法如果出错,都会导致数组中后续都所有模块都无法进行
经过下面都修改,就可以把所有模块都错误变成非致命的:

for(var i=0; i<mods.length; i++){
    try{
        mods[i].init();
    }catch(ex){
        //在这里处理错误
    }
}