我的代码中有一种情况,我需要跟踪生产中的错误。
我使用ember.js
作为我的框架。
要跟踪生产中出现的错误,我使用Ember.Onerror
,它只提供任何功能错误跟踪。
Ember.onerror = function(error) {
Em.$.ajax('/error-notification', 'POST', {
stack: error.stack,
otherInformation: 'exception message'
});
}
但我想跟踪断言失败的错误,例如
网址* 未与您应用中的任何路由器匹配 *
答案 0 :(得分:3)
关于Ember关于捕获错误和断言错误的文档确实很少。就我而言,在进入生产之前,我需要在调试模式下将这些异常可视化到控制台之外。所以,我去了GitHub的Ember项目,找到了Ember.onerror(错误){...}和Ember.assert(desc,test){...}函数的规范和实现,然后我写了我的我决定将errorHandler命名为新适配器(app / initializers文件夹)的初始化函数内的这些函数的自有版本。
Ember.assert = function(desc, test) {
if (!test) {
console.log('This is a test to log Assertions!');
/* your assertion treatment code goes here*/
throw new Ember.Error("Assertion Failed: " + desc);
}
}
...并且通过抛出你实际上正在调用的新Ember.Error(...):
Ember.onerror = function(error) {
console.log("An error has occurred in ember: " + error.message);
/* your error treatment code goes here*/
};
答案 1 :(得分:0)
Ember的构建工具会删除断言/调试调用,例如Ember.assert()
,因此如果您使用ember.prod.js
或ember.min.js
,则不会获得断言。
定义一个断言,如果条件是,将抛出异常 没见过。 Ember构建工具将删除对Ember.assert()的任何调用 在进行生产构建时。例如:
// Test for truthiness Ember.assert('Must pass a valid object', obj); // Fail unconditionally Ember.assert('This code path should never be run')