在Ember应用程序上设置Airbrake

时间:2014-01-27 16:11:39

标签: javascript ember.js airbrake

如何设置Airbrake,使其从Ember应用程序中出现的未处理的Javascript错误中获取上下文信息?

2 个答案:

答案 0 :(得分:8)

假设你已经包含Airbrake-js,你可以挂钩Ember的onerror处理程序并推送错误。

Ember.onerror = function(err) { // any ember error
    Airbrake.push(err);
    //any other error handling
};
Ember.RSVP.configure('onerror',function(err){ // any promise error
    Airbrake.push(err);
    console.error(e.message);
    console.error(e.stack);
    //any other generic promise error handling
};
window.onerror = function(err){ // window general errors.
    Airbrake.push(err);
    //generic error handling that might not be Airbrake related.
};

您可以在airbrake-js GitHub存储库文档中看到更多数据的不同参数选项。

答案 1 :(得分:1)

我不知道这是否能回答你的问题,但我希望它有所帮助。

要处理服务器抛出的错误,您可以在应用程序的路径中定义“错误”功能并将其推送到Airbrake:

App.ApplicationRoute = Ember.Route.extend({
  actions: {
    error: function(error) {
      // handle the error
      Airbreak.push(error)
    }
  }
});

此外,如果你在其他地方发现错误并且处理相同,你可以制作一个mixin并传递错误:

App.ErrorHandlerMixin = Ember.Mixin.create({
    handleError: function(error){
         //make different stuff
         Airbreak.push(error)
    }      
});

App.ApplicationRoute = Ember.Route.extend(App.ErrorHandlerMixin, {
  actions: {
    error: function(error, transition) {
      this.handleError(error);
    }
  }
});

App.ApplicationController = Ember.ObjectController.extend((App.ErrorHandlerMixin, {
    someFunction: function () {
        this.handleError(randomError);
    }
});

这样您就可以在一个地方完成所有错误处理。