【问题标题】:How to detect errors of invalid URL in Worker API如何检测 Worker API 中无效 URL 的错误
【发布时间】:2015-08-19 18:09:31
【问题描述】:

如果我运行以下命令(至少在 Chromium 上):

var w = null;
try {
    w = new Worker( 'NONEXISTENT_URL' );
}
catch ( e ) {
    console.log( 'CAUGHT: ' + e );
}
console.log( w );

...即使Worker 构造函数的参数没有指向有效的文件名,也没有捕获到异常。此外,控制台显示Worker {},表明w 现在拥有Worker 的(非功能性)实例。

其他错误情况也是可能的。例如,构造函数的参数可能可用且可读,但不包含有效的 JavaScript。

我还能如何检测此类错误情况?

(顺便说一句:请假设浏览器支持Worker API。)

【问题讨论】:

    标签: javascript exception


    【解决方案1】:

    使用onerror 事件处理程序可能会出错。

    var worker = new Worker('aURL');
    
    worker.onerror = function () {
        console.log( 'error' );
    };
    

    如果 URL 的语法无效或违反了同源策略,则抛出 SECURITY_ERR 类型的 DOMException

    【讨论】:

    • 不要认为这会一直有效,因为您在 url 加载之后设置了 onerror。
    • @Pacerier 它确实有效:构造函数本身不会抛出,但会触发 onerror。但是,onerror 是异步的,所以你不知道它什么时候会发生。
    猜你喜欢
    • 2017-03-27
    • 2012-03-03
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多