2013-01-25 22 views
12

İstisna işleme ile ilgili olarak Chrome uzantısı belgelerinde hiçbir şey bulamıyorum. Tüm asenkron apis, her yerde deneyin/yakalama ifadeleri ile kodu çöpe atmadan çok zor hale getiriyor ..Chrome uzantılarında istisna işleme

Küresel bir istisna eylemcisini arka plan sayfama nasıl ekleyebilirim? bir istisna?

+0

. Kaynak temizliği yapmak istiyorsanız, kodunuzu bazı yönetim olay işleyicisine koyabilirsiniz – Sudarshan

cevap

12

Merhaba aslında chrome extension documentation

Yani uygulama aşağıdaki gibi bir şey olmalı bkz chrome.extension.lastError ile yürütmek komut geri aramasında hatayı alabilirsiniz şimdi kullanımdan kaldırıldı. LastError uygulaması hala var ancak chrome.runtime.lastError.

bu orijinal işlevinin pek değişmez Uygulanması:

bir hata veya istisna sırasında ayarlanır ve tarihe kadar gibi hiçbir açık hata işleme yöntemleri vardır bazı değişken vardır
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 
     } 
    } 
}) 
+1

Temizleme için ihtiyacım olan hatalar, bir 404 (yüklenemedi) sayfasında çalıştırmaya çalışan bir içerik komut dosyasından geliyordu. Bu durumda chrome.extension.lastError 'yerine chrome.runtime.lastError' adresini kontrol etmem gerekiyordu. Cevaba bu küçük değişiklikten sonra, hatalarım gitti. – MDMower

3

Genel bir hata işleyicisi bulamadım ancak aynı zamanda iyi çalışan bir çözüm bulmayı başardım.

Ancak hangi yöntemleri aradığınıza bağlı. Hatalarımın çoğu chrome.tabs.executeScript() numaralı telefondan bir chrome:// sayfasında veya bir krom web mağazası sayfasında arama yapıldı. Bu işlevin son parametresi, results dizisini içeren bir geri aramadır. Bu undefined olsaydı, bir hata geri alıyorum olduğunu buldum. Bu şekilde, bir hata olduğunda kullanıcıyı bilgilendirmek için basit bir hata işleme işlevi kurabildim.

chrome.tabs.executeScript(null, {file: '/path/to/file.js'}, function(results) { 
    if (results === undefined) { 
     // Fire error handling code 
    } 
}); 

Yine, Idk bu aradığınız yöntemlerle uygulanabilir ama eğer ben bu şekilde istediğini yapmak başardı.

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 
     } 
    } 
}) 

GÜNCELLEME 2017

chrome.extension.lastError.message sahiptir: