2012-11-20 115 views
1

我無法弄清楚如何捕捉從image.onload調用的函數的異常。請注意下面的例子:如何從圖像中捕捉異常

function afterImgLoads() { 
    throw 'This is being thrown from img.onload!'; 
} 

try { 
    var img = new Image(); 
    img.onload = afterImgLoads; 
    img.src = 'path/to/valid/image.jpg'; 
} catch(e) { 
    throw 'This is being thrown after setting img.src'; 
} 

在上面的例子中,我無法弄清楚如何讓被拋出第二throw語句時afterImgLoads()拋出了自己的錯誤。

回答

0

由於onload是異步發生的,所以該catch不可能拋出語句。

0

您可以設置window.onerror,它將在頁面上任何位置的未捕獲異常上調用。

4

您也許能夠使用onerror

img.onerror = onErrorFunction; 

它會調用該函數在一個錯誤加載圖像

+0

感謝的事件。不幸的是,我並不擔心加載圖像失敗。我試圖在IMG加載成功後運行其他代碼,並且如果THAT進程變差,我想拋出一個自定義異常。 – fronzee

+0

然後只是運行你想在'afterImageLoads'函數中有例外的代碼 'function afterImageLoads(){try {} catch(e){}}' 這就是你要找的東西嗎? – powerc9000

+0

其實我已經這樣做了,但我的例子被簡化了。最終,我需要從afterImageLoads()中拋出,而不是捕獲,並捕獲其他地方的異常。幸運的是,我發現了一種不同於我最初嘗試完成的整體方法,所以我現在放棄了這種方法。 – fronzee