我似乎無法在Chrome擴展文檔中找到有關異常處理的任何內容。所有的異步API使得它非常困難,而不會在任何地方使用try/catch語句亂拋垃圾代碼。Chrome擴展中的異常處理
如何添加一個全局異常處理程序到我的背景頁面,這將允許我做一些資源清理一個例外?
我似乎無法在Chrome擴展文檔中找到有關異常處理的任何內容。所有的異步API使得它非常困難,而不會在任何地方使用try/catch語句亂拋垃圾代碼。Chrome擴展中的異常處理
如何添加一個全局異常處理程序到我的背景頁面,這將允許我做一些資源清理一個例外?
嗨其實你可以得到與chrome.extension.lastError
的執行腳本回調錯誤看到chrome extension documentation
所以實現應該是這樣的:
chrome.tabs.executeScript(tabId, details, function(){
if (chrome.extension.lastError){
var errorMsg = chrome.extension.lastError.message;
if (errorMsg == "Cannot access a chrome:// URL"){
//Error handling here
}
}
})
UPDATE 2017年
chrome.extension.lastError.message
有現在已被棄用。 lastError實現仍然存在,但在chrome.runtime.lastError
上。
實現這並不會改變太多的原有功能:
chrome.tabs.executeScript (tabId, details, function() {
if (chrome.runtime.lastError) {
var errorMsg = chrome.runtime.lastError.message
if (errorMsg == "Cannot access a chrome:// URL") {
// Error handling here
}
}
})
我需要清理的錯誤來自嘗試在404(無法加載)頁面上執行的內容腳本。在這種情況下,我需要檢查'chrome.runtime.lastError'而不是'chrome.extension.lastError'。在對答案進行小幅改動後,我的錯誤消失了。 – MDMower
我一直沒有找到一個全局錯誤處理程序,但我能夠想出一個可以正常工作的解決方案。
它取決於你打電話的方法。我的大部分錯誤都是通過在chrome://
頁面或Chrome網頁商店頁面上撥打chrome.tabs.executeScript()
來實現的。該函數的最後一個參數是一個包含results
數組的回調。我發現如果這是undefined
,我得到一個錯誤。通過這種方式,我可以設置一個簡單的錯誤處理函數來在出現錯誤時通知用戶。
chrome.tabs.executeScript(null, {file: '/path/to/file.js'}, function(results) {
if (results === undefined) {
// Fire error handling code
}
});
再次,Idk如果這適用於您打電話的方法,但我能夠做到我想要的這種方式。
有這些錯誤或異常時設置,也沒有明確的錯誤處理方法,因此直到日期一些變量。如果你想做資源清理,你可以把你的代碼放在一些管理事件處理程序中。 – Sudarshan