例外処理に関するChrome拡張機能のドキュメントに何も見つからないようです。すべての非同期APIは、どこにでもtry/catchステートメントをコードに散らかさずにそれを非常に困難にします。
バックグラウンドページにグローバル例外ハンドラーを追加して、例外が発生した場合にリソースのクリーンアップを実行できるようにするにはどうすればよいですか?
例外処理に関するChrome拡張機能のドキュメントに何も見つからないようです。すべての非同期APIは、どこにでもtry/catchステートメントをコードに散らかさずにそれを非常に困難にします。
バックグラウンドページにグローバル例外ハンドラーを追加して、例外が発生した場合にリソースのクリーンアップを実行できるようにするにはどうすればよいですか?
次のコマンドを使用すると、スクリプト実行コールバックでエラーが発生する可能性があります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
}
}
})
グローバルエラーハンドラーを見つけることができませんでしたが、同様に機能するソリューションを思い付くことができました。
ただし、呼び出しているメソッドによって異なります。私のエラーのほとんどは、ページまたはChromeウェブストアページの呼び出しchrome.tabs.executeScript()
に起因していました。chrome://
この関数の最後のパラメーターは、results
配列を含むコールバックです。undefined
これが原因でエラーが戻ってきたことがわかりました。このようにして、エラーが発生したときにユーザーに通知する簡単なエラー処理関数を設定することができました。
chrome.tabs.executeScript(null, {file: '/path/to/file.js'}, function(results) {
if (results === undefined) {
// Fire error handling code
}
});
繰り返しますが、これが呼び出しているメソッドに適用できる場合はIdkですが、この方法でやりたいことができました。