16

例外処理に関するChrome拡張機能のドキュメントに何も見つからないようです。すべての非同期APIは、どこにでもtry/catchステートメントをコードに散らかさずにそれを非常に困難にします。

バックグラウンドページにグローバル例外ハンドラーを追加して、例外が発生した場合にリソースのクリーンアップを実行できるようにするにはどうすればよいですか?

4

2 に答える 2

17

次のコマンドを使用すると、スクリプト実行コールバックでエラーが発生する可能性があります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
       }
    }
})
于 2013-11-15T09:22:04.713 に答える
4

グローバルエラーハンドラーを見つけることができませんでしたが、同様に機能するソリューションを思い付くことができました。

ただし、呼び出しているメソッドによって異なります。私のエラーのほとんどは、ページまたは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ですが、この方法でやりたいことができました。

于 2013-08-15T21:36:27.037 に答える