【问题标题】:How can we catch an error thrown by included javascript file in the main file?我们如何捕获主文件中包含的 javascript 文件引发的错误?
【发布时间】:2015-04-24 11:08:37
【问题描述】:

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

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

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

【问题讨论】:

  • 是在 random.js 首次加载时发生异常,还是在 main.js 稍后调用其中的某些函数时发生异常?仅供参考,浏览器中的所有脚本都在客户端运行,因此它们中的所有错误都已经在客户端,因此您不能“阻止它到达客户端”。
  • random.js 在执行时会产生错误。通过到达客户端,我的意思是在控制台中向客户端显示错误。我只是不想让客户端知道发生了错误。
  • 执行是指浏览器加载时还是调用函数时?

标签: javascript exception-handling try-catch


【解决方案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很好地解释了原因:

当一个外部脚本(例如,从它自己的脚本标签加载的脚本) 先初始化,如果抛出异常,就没有办法catch 该异常并从该脚本外部处理它。

但是是的

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";
}

那么,有可能。

【讨论】:

    【解决方案2】:

    当一个外部脚本(例如从它自己的脚本标签加载的脚本)第一次初始化时,如果它抛出一个异常,就没有办法直接捕获该异常并从该脚本外部处理它。

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

    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 中围绕函数调用放置一个异常处理程序并以这种方式捕获异常(但现在听起来像这不是您的具体情况)。

    【讨论】:

    • @ManishDsouza - 由于您似乎是 StackOverflow 的新手,您是否知道如果您的问题得到了回答,那么您应该选择最佳答案并单击左侧的绿色复选标记回答。这将通知社区您的问题已得到回答,并为您和提供答案的人赢得一些声誉积分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2011-03-21
    • 2017-04-29
    相关资源
    最近更新 更多