2012-11-20 119 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