我们如何捕获主文件中包含的javascript文件引发的错误?

时间:2015-02-23 07:06:53

标签: javascript exception-handling try-catch

考虑我正在使用的案例,例如脚本main.js。

现在我在main.js文件中包含了一些random.js文件。

如果random.js文件生成了一些错误,我如何在main.js文件中捕获并处理它,以便它不会到达客户端。

2 个答案:

答案 0 :(得分:1)

  

1)我猜你想要这样的东西:

html文件:

<script>
try{
</script>

<script src='two.js'></script>

<script>
}catch(e){
console.log(e);
}
</script>

<强> one.js:

throw "not a number";

这是不可能的,jfriend00很好地解释了原因:

  

当外部脚本(例如从其自己的脚本标记加载的脚本)时   首先初始化,如果它抛出异常,就没有办法捕获   该异常并从该脚本外部处理它。

但是是的

  

2)如果库内有一个需要的功能   对于EX:

html文件:

<script src='two.js'></script>
<script>
try{
throwsError();
}catch(e){
console.log(e)
}
</script>

<强> one.js:

function throwsError(){

 throw "not a number";
}

然后,这是可能的。

答案 1 :(得分:0)

当外部脚本(例如从其自己的脚本标记加载的脚本)首次初始化时,如果它抛出异常,则无法直接捕获该异常并从该脚本外部处理它。

如果你可以修改那个脚本,那么你可以在初始化代码周围放置一个异常处理程序并在那里捕获错误。

random.js内部:

try {
    // initialization code in random.js
} catch(e) {
    // code to handle the exception gracefully here
}

您可以做的一件事是使用以下方法连接全局错误处理程序:

window.onerror = function(errorMsg, url, lineNumber) { return true; };

如果此函数返回true,则它将阻止任何默认错误处理。详情here


如果从main.js调用random.js中的函数时出现问题,那么你可以在函数调用周围的main.js中放置一个异常处理程序并以这种方式捕获异常(但它现在听起来像这不是你的具体情况。)