【问题标题】:How to catch an exception from image onload如何从图像加载中捕获异常
【发布时间】:2012-11-08 00:58:00
【问题描述】:

我不知道如何从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';
}

在上面的例子中,当afterImgLoads() 抛出自己的错误时,我不知道如何抛出第二个 throw 语句。

【问题讨论】:

    标签: javascript image exception-handling try-catch


    【解决方案1】:

    你也许可以使用onerror

    img.onerror = onErrorFunction;
    

    如果加载图像出错,它将调用该函数

    【讨论】:

    • 谢谢。不幸的是,我并不担心加载图像失败。我正在尝试在 img 加载成功后运行其他代码,如果该过程出错,我想抛出一个自定义异常。
    • 然后只需在afterImageLoads 函数function afterImageLoads(){ try{} catch(e){} } 中运行您想要例外的代码,这就是您要找的吗?
    • 实际上我已经在这样做了,但我的例子被简化了。最终,我需要从 afterImageLoads() 中抛出而不是捕获,并在其他地方捕获该异常。幸运的是,我找到了与我最初想要完成的任务不同的整体方法,因此我暂时放弃了这种方法。
    • 好的,我现在明白了。抱歉,当时我帮不上忙。
    【解决方案2】:

    您可以设置 window.onerror ,它将在您页面上任何地方的其他未被捕获的异常上调用。

    【讨论】:

      【解决方案3】:

      因为 onload 是异步发生的,所以 catch 不可能抛出语句。

      【讨论】:

        猜你喜欢
        • 2010-12-01
        • 2011-02-13
        • 2016-05-28
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 1970-01-01
        • 2019-05-20
        相关资源
        最近更新 更多