Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬(-cli)应用程序能否触发window.onerror?_Ember.js_Error Handling - Fatal编程技术网

Ember.js 余烬(-cli)应用程序能否触发window.onerror?

Ember.js 余烬(-cli)应用程序能否触发window.onerror?,ember.js,error-handling,Ember.js,Error Handling,在ember(-cli)应用程序中是否存在任何类型的javascript错误不由处理?换言之,是否需要将处理程序添加到 在我的测试中,我没有发现任何错误,而这些错误都不会被Ember的onerror处理。语法错误没有通过ember cli的构建过程。根据我的经验,我不建议实现窗口.onerror,除非您有充分的理由这样做,并且您知道自己可能在做什么 据我所知,Ember的所有onerror方法都依赖于窗口。onerror覆盖它有可能覆盖/禁用应用程序中的所有错误 举个例子,我最近有一次经历,我注

在ember(-cli)应用程序中是否存在任何类型的javascript错误不由处理?换言之,是否需要将处理程序添加到


在我的测试中,我没有发现任何错误,而这些错误都不会被Ember的onerror处理。语法错误没有通过ember cli的构建过程。

根据我的经验,我不建议实现
窗口.onerror
,除非您有充分的理由这样做,并且您知道自己可能在做什么

据我所知,Ember的所有
onerror
方法都依赖于
窗口。onerror
覆盖它有可能覆盖/禁用应用程序中的所有错误

举个例子,我最近有一次经历,我注意到我所有的js错误都停止登录到控制台。原因是我的团队中的另一个开发人员在我的index.html中引入了一个
标记,该标记利用了
window.onerror
来生成一些错误报告脚本。结果是,重写
窗口
几乎禁用了所有ember的
onerror
,因为它们以冒泡的方式工作

我认为,如果您确实想覆盖
window.onerror
您需要确保它总是返回
false
,这样它就不会阻止浏览器上的默认错误处理

见:


我希望这在某种程度上有助于澄清。

余烬有一个内置的错误事件,您可以在路由中使用它

  actions: {
    error(error, transition) {
      if (error && error.status === 400) {
        //handle error
      }
    }
  }

更多信息:

EmberJS在控制其边界内发生的错误方面做得非常好。由余烬代码引起的错误都应该被导入特定于余烬的处理程序中

然而,浏览器JavaScript是一个复杂的野兽。在Ember的外部发生的任何JavaScript错误都不会在内部捕获,并且只能通过全局
窗口暴露。onerror
。其中一些例子包括:

  • 对本机函数(如
    setTimeout
    addEventListener
  • 非余烬JavaScript库和集成,如Stripe、Twitter或广告
  • 可以以不可预知的方式与DOM交互的浏览器扩展脚本
要全面了解访问者的情况,您可能需要连接到
Ember.onerror
窗口.onerror
,并将报告发送回日志。即使您不是在积极开发,浏览器更改也可能导致应用程序中出现突然的错误。喜欢有一些很好的选项可以自动记录来自余烬应用程序的错误,比如


披露:我是TrackJS的创始人之一,所以我调试了很多错误:)

你应该处理
window.onerror
Ember.onerror
Ember.RSVP.onerror
你有什么证据或例子说明我为什么要处理
window.onerror
?如果你已经处理了
Ember.RSVP.onerror
,那就没有必要处理
Ember.RSVP.onerror>
Ember.onerror
。在我看来,整个Ember运行循环都包装在try-catch中,所以应用程序代码错误应该100%由这个Ember.onerror处理。然而,我不确定这就是为什么它是一个评论。:)ember.onerror无法捕获数千个潜在错误。应用程序启动前抛出的任何错误、应用程序范围之外的任何错误(想想第三方异步)、大多数网络错误、大多数CSP错误,以及您自己的代码在ember范围之外执行的任何异步错误。