【问题标题】:Javascript error handling catches nothingJavascript 错误处理什么也没捕获
【发布时间】:2019-12-27 09:19:54
【问题描述】:

我有奇怪的错误生成功能..它来自像这样的HttpRequest

public async request(method, url, data, headers = {}){
    let init { method: method };
    if (data) {
        let payload: string = JSON.stringify(data);
        init.body = payload;
    }

    if (this.key) headers["x-auth-token"] = this.key;
    headers["Content-Type"] = "application/json";
    init.headers = headers;

    let result = await fetch(url, init);
    if (result.status == 200) return result;
    throw { status: result.status, message: result.statusText };
}

现在,我正试图赶上这样的事情:

try {
    let img = await HttpRequest.request("GET", "/login");
    let text = await img.text();

    let str = "data:image/jpeg;base64, " + text;
    this.setState({ avatar: str });
} catch (err) {
    console.log("log here");
}

奇怪的是,没有任何发现,即使我故意犯了一个错误,控制台中的任何地方都没有显示“log here”。

但如果我这样改:

try {
    let img = await HttpRequest.request("GET", "/login");
    let text = await img.text();

    let str = "data:image/jpeg;base64, " + text;
    this.setState({ avatar: str });
} catch (err) {
    console.error("log here"); // <--- console.error() instead of console.log
}

然后控制台显示“log here”错误。奇怪的是,同一 catch 子句中的 console.log 和 console.error 之间的区别处理方式不同。

谁能帮帮我,我哪里做错了?

谢谢

编辑:如果它有所不同,那么当我在我的request() 函数中将错误作为throw "ERROR " + result.status + ": " + result.statusText; 抛出时,代码之前的行为是正确的。当我将它改回抛出字符串而不是对象时,它恢复了正常。

【问题讨论】:

  • "如果我这样改变它" — 找出不同之处……? =_=
  • 在catch块中,之前是concole.log(),改sn-p后是console.error!!
  • 所以您已将控制台设置为仅显示错误,不显示调试日志...?
  • 是的..但是如果我使用console.log(),它根本没有执行。
  • @deceze 是的。我删除了所有例程只是为了查看它是否被执行。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

嗯.. 我不确定这是答案还是正确答案,但结果证明问题不是编程或 JavaScript 性质。

在尝试了Parth Savaliya的评论后,我有了一些想法,并尝试将这个非常简单的功能做出来

function testError() {
    throw {aa: 'test', bb: 'bb'};
}

try {
    console.log("nothing here");
    testError();
} catch (err) {
    console.log(err);
    console.log('foo');
}

每次我输入不同的对象时,任何console 命令,包括console.error() 都会给我不同的结果。之前的console.error() 只是运气。它从难以理解的咕噜咕噜,各种字符串,到没有输出,最后崩溃了谷歌浏览器。没有图案,看起来很随意。我还尝试将catch 子句中的console.log() 替换为对服务器的XHR 请求,并且效果很好。 Firefox 运行良好。所以我得出的结论是 chrome 的控制台有问题。试图删除所有扩展,清理缓存和所有内容,重新安装chrome,它就解决了。

【讨论】:

    【解决方案2】:

    我认为您目前只查看错误日志,例如 this...!

    请点击列表中的第一项,显示所有类型的日志,如 this...!

    【讨论】:

    • 我已启用一切。错误、警告、日志、信息、调试。 CSS、XHR 和请求
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多