我想通過瀏覽器操作通過Chrome擴展程序打開一個窗口。爲什麼try..catch不能與chrome.windows.get一起使用?
var wid = null;
chrome.windows.get(wid, function(chromeWin) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
});
,以防窗臺的多個副本,我想檢查窗口ID。但如果第一次使用,可以理解,它會引發錯誤,因爲wid
是null
。
Error: Invocation of form windows.get(null, function) doesn't match definition windows.get(integer windowId, optional object getInfo, function callback)
我試圖用try..catch
塊和捕捉我處理「wid
是null
」的情況。
try {
var wid = null;
chrome.windows.get(wid, function(chromeWin) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
});
}
catch(error) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
}
但try..catch
不捕 「wid
是null
」 的情況。 我知道if
子句可能有助於我的實驗,但我想知道爲什麼try
表現如此。
爲什麼try..catch
不緩存錯誤,以及如何在Chrome中打開沒有副本的窗口?
1.您可以在調用函數之前檢查'null' **。您有兩個變量'wid'和'winId',因此代碼不完整或者您有拼寫錯誤。 – wOxxOm
謝謝。這確實是錯字。如果子句有幫助,但會使代碼變得複雜。嘗試和趕上似乎是整潔的,但不知何故不適用於此代碼清單。 –
代碼中沒有任何內容會阻止重複出現。 – Xan