gpt4 book ai didi

javascript - 如何在回调内部抛出错误,并在外部捕获它

转载 作者:行者123 更新时间:2023-11-29 17:52:42 28 4
gpt4 key购买 nike

简介

在这个 jQuery(document).ready() 函数内部,在匿名函数内部,我抛出一个错误,该错误在第二个 catch block 中被捕获。然后我在该 catch block 内抛出一个错误,并试图在第一个 try catch block 外捕获它。

问题。

  1. 这可能吗?浏览器控制台显示“未捕获”。
  2. 如果可以,那怎么可能?
  3. 任何其他信息将不胜感激 - 试着解决这个问题。
    try {            // bind to ready            jQuery(document).ready(function () {                try {                    throw Error("Can this be caught outside of this jquery callback?");                    _this.initialize();                } catch(e) {                    console.log(e.message + ' Caught inside callback');                    throw Error(e.message + ' Not caught outside');                }            });        } catch(e) {            //NEVER gets executed.            console.log(e.message);        }     

最佳答案

$(document).ready 的事件处理程序与注册它们的代码异步执行 - 如果页面仍在加载,则注册发生时。您的 function() { ... throw ... } 在外部 try/catch block 之外执行。你问的是不可能的。


对@RickHitchcock 在 https://jsfiddle.net/a3vttpk6/ 中观察到的行为的解释(请参阅问题的第一条评论)

如果在 Rick's fiddle 中单击 Javascript 设置按钮,您将看到“加载类型”设置为“onLoad”。这意味着此窗口中的整个 js 代码都包装在 window.onload = function() { ... } 中。这样做的结果是 - 立即执行 $(document).ready 处理程序,因为页面已经加载。如果您选择“不换行”设置 - 您将看到问题中描述的行为。

关于javascript - 如何在回调内部抛出错误,并在外部捕获它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41862950/

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