Обработка исключений в расширениях Chrome
Я не могу найти ничего в документации по расширению Chrome об обработке исключений. Вся асинхронная apis делает это очень сложным, не засоряя код с помощью инструкций try/catch повсюду.
Как добавить глобальный обработчик исключений на мою фоновый рисунок, который позволит мне выполнить некоторую очистку ресурсов в случае исключения?
Ответы
Ответ 1
Привет, вы действительно можете получить ошибку в обратном вызове execute script с chrome.extension.lastError
см. хромированную документацию по расширению
Итак, реализация должна быть примерно такой:
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
}
}
})
ОБНОВЛЕНИЕ 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
}
}
})
Ответ 2
Мне не удалось найти глобальный обработчик ошибок, но я смог найти решение, которое работает так же хорошо.
Это зависит от того, какие методы вы вызываете. Большинство моих ошибок возникло из вызова chrome.tabs.executeScript()
на странице chrome://
или на странице Chrome. Последним параметром этой функции является обратный вызов, содержащий массив results
. Я обнаружил, что если это было undefined
, я получил ошибку. Таким образом, я смог настроить простую функцию обработки ошибок, чтобы уведомить пользователя о появлении ошибки.
chrome.tabs.executeScript(null, {file: '/path/to/file.js'}, function(results) {
if (results === undefined) {
// Fire error handling code
}
});
Опять же, Idk, если это применимо к методам, которые вы вызываете, но я смог сделать то, что хотел, таким образом.