【问题标题】:Javascript on throw event?抛出事件的Javascript?
【发布时间】:2011-12-21 22:03:44
【问题描述】:

在 Javascript 中有没有办法监听 throw 事件?

即使执行这样的代码,我也希望能够调用事件处理程序:

var hi = "hi";
try {
  throw hi;
}
catch (e) {

}

在 chrome(也可能是 firebug)中,您可以运行此代码并点击“break on all errors”,它会在该 throw 行上中断。他们到底是怎么做到的?那是在 Javascript 之外吗?

【问题讨论】:

    标签: javascript events plugins throw


    【解决方案1】:

    他们的做法是 JavaScript 引擎不会继续出错,它会在所有错误时崩溃,就像你编译 c++ 一样,它不是语言功能,它是浏览器

    【讨论】:

      【解决方案2】:

      这不是异常事件,处理程序进入catch-block:

      try {
          //....
      }
      catch (e) {
          // exception handling here
          // or may be fire/trigger some event here
      }
      

      【讨论】:

        【解决方案3】:

        您接受的答案不正确。

        如果你有一个不在try {} catch() {} 块内发生的错误,那么JavaScript 执行将在那个时候真正中断。

        但是,如果您将可能破坏的代码包装在 try {} catch() {} 中,则可以使用 re-throw 将由一个全局事件处理程序处理的错误:

        window.onerror = function (error) {
          // access `error` object
        };
        
        try {
          // for example try to assign property to non-existing object
          undefinedObj[property] = 1;
        }
        catch (error) {
          // `error` object will be available in `onerror` handler above
          throw new Error(error);
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-16
          • 1970-01-01
          • 2017-01-27
          • 1970-01-01
          • 1970-01-01
          • 2020-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多