Rollbar 不检测 chrome.tabs 回调中的错误
Rollbar does not detect errors within chrome.tabs callbacks
我注意到滚动条项目不会报告 chrome.tabs 调用回调中发生的错误。例如,不会报告以下错误:
chrome.tabs.getCurrent(function(currentTab) {
throw "This is critical";
});
如果 throw
语句在 chrome.tabs 回调之外,它会按预期报告给 rollbar。
无论是发生在后台脚本中,还是发生在通过 chrome-extension://
url.
访问的扩展页面中,行为都是相同的
是否有允许 rollbar 跟踪这些回调中的错误的解决方案?
chrome API 回调中抛出的错误,似乎没有被 onerror
侦听器捕获。这是来自 chromium 项目的相关讨论:https://bugs.chromium.org/p/chromium/issues/detail?id=357568
Chrome 本身在选项卡回调中的行为很奇怪,即使不使用 Rollbar 也是如此。
这里是我使用的测试代码:
chrome.tabs.getSelected(null, function(tab){
console.log('tabs callback', window);
throw 'Error in tab';
});
setTimeout(function(){
console.log('timeout callback', window);
throw 'Error in timeout';
}, 100);
对于超时回调,扩展的后台控制台和错误视图都显示异常的正确代码位置。
但是,对于选项卡回调,位置在控制台和错误视图中显示为 _generated_background_page.html,没有回溯或行号。 Chrome 本身似乎并不知道错误的来源。
两个回调中的 window 对象确实将 onerror
挂钩正确设置为 Rollbar 的处理程序。但是在选项卡示例中,它永远不会被调用。 Chrome 似乎在到达 onerror
处理程序之前捕获错误,或者这是什至不使用 onerror
处理程序的任何类型的线程。
作为解决方法,我尝试将代码包装在 try/catch 中,并向 Rollbar 报告:
chrome.tabs.getSelected(null, function(tab){
try {
console.log('tabs callback', window);
throw 'Error in tab';
}
catch (e) {
console.log('error', e);
Rollbar.log(e);
}
});
这有效,但错误对象仍将其位置报告为 _generated_background_page.html。至少它确实有正确的错误信息。
我注意到滚动条项目不会报告 chrome.tabs 调用回调中发生的错误。例如,不会报告以下错误:
chrome.tabs.getCurrent(function(currentTab) {
throw "This is critical";
});
如果 throw
语句在 chrome.tabs 回调之外,它会按预期报告给 rollbar。
无论是发生在后台脚本中,还是发生在通过 chrome-extension://
url.
是否有允许 rollbar 跟踪这些回调中的错误的解决方案?
chrome API 回调中抛出的错误,似乎没有被 onerror
侦听器捕获。这是来自 chromium 项目的相关讨论:https://bugs.chromium.org/p/chromium/issues/detail?id=357568
Chrome 本身在选项卡回调中的行为很奇怪,即使不使用 Rollbar 也是如此。
这里是我使用的测试代码:
chrome.tabs.getSelected(null, function(tab){
console.log('tabs callback', window);
throw 'Error in tab';
});
setTimeout(function(){
console.log('timeout callback', window);
throw 'Error in timeout';
}, 100);
对于超时回调,扩展的后台控制台和错误视图都显示异常的正确代码位置。
但是,对于选项卡回调,位置在控制台和错误视图中显示为 _generated_background_page.html,没有回溯或行号。 Chrome 本身似乎并不知道错误的来源。
两个回调中的 window 对象确实将 onerror
挂钩正确设置为 Rollbar 的处理程序。但是在选项卡示例中,它永远不会被调用。 Chrome 似乎在到达 onerror
处理程序之前捕获错误,或者这是什至不使用 onerror
处理程序的任何类型的线程。
作为解决方法,我尝试将代码包装在 try/catch 中,并向 Rollbar 报告:
chrome.tabs.getSelected(null, function(tab){
try {
console.log('tabs callback', window);
throw 'Error in tab';
}
catch (e) {
console.log('error', e);
Rollbar.log(e);
}
});
这有效,但错误对象仍将其位置报告为 _generated_background_page.html。至少它确实有正确的错误信息。