gpt4 book ai didi

javascript - window.onerror 和 try-catch block 处理错误的区别

转载 作者:数据小太阳 更新时间:2023-10-29 05:36:16 27 4
gpt4 key购买 nike

我正在考虑使用 window.onerrortry{...} catch(e){...} block 来处理 JavaScript 运行时错误。

https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onerror状态:

Note that some/many error events do not trigger window.onerror, you have to listen for them specifically.

看来 window.onerrortry{...} catch(e){...} 都可以处理 ReferenceError: http://jsfiddle.net/7RARf/

此外,两者都无法处理 SyntaxError: http://jsfiddle.net/UXVs2/

除了使用 window.onerror 处理错误和使用 try{...} catch(e){...} 处理它们之间的明显区别外,尝试-catch 允许我们优雅地处理错误、重新抛出它们等,而 window.onerror 函数则不能,等等。这两种处理错误的方式之间还存在哪些其他差异?是否有任何错误可以用 window.onerror 处理,但不能用 try{...} catch(e){...} 处理?反之亦然?

最佳答案

是 - window.onerror 可以检测由浏览器工作流程引起的错误 - try/catch 仅在执行的 js 代码的有限部分上运行。 window.onerror 可能会检测到插件问题或由不严格的代码(jQ 等库、YT API 等 API 等)引起的任何错误 - 例如:您不能将外部库支持的异步代码放入 try(不修改外部代码) ,你不能将由 html 标签完成的脚本加载放入 try(它由浏览器管理) - 当脚本文件损坏并且无法加载到标签时 window.onerror 将触发 - window.onerror 抛出的错误比 catch 多得多能够支持 - 它还包含有关文件和行的信息。缺点是 window.onerror 只提供信息 - 代码被中断,使用 try/catch 你可以提供回退行为并允许代码处理情况 - 即使有错误

您可以使用 try/catch 来捕获语法错误,但前提是您正在评估字符串形式的代码:

try{
eval('(function(){asdhaowd;;;;asd;!!!@#!@$lolzolololol]]]]]]]})()');
} catch(e){
do sth();
}

它会捕获 eval 错误(意外的 ']' 或它之前的东西)我在我的网站上使用它来检测用户上传的损坏代码。window.onerror 仅对调试有用 - 它不能防止代码崩溃,而 try 可以

关于javascript - window.onerror 和 try-catch block 处理错误的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com