【发布时间】: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