phi*_*294 3 javascript google-chrome exception
在 Chrome 上(虽然不是在 Firefox 上),
JSON.parse("")Run Code Online (Sandbox Code Playgroud)
因“脚本错误”而失败。您可以通过运行上面的脚本或运行https://jsfiddle.net/xupf27nh/1/来重现它。为什么会出现脚本错误?这里没有cors活动...?
try {
JSON.parse("")
} catch(e) {
throw e;
}Run Code Online (Sandbox Code Playgroud)
正确打印错误信息"message": "Uncaught SyntaxError: Unexpected end of JSON input",。为什么这次不一样?为什么不
a.b.c.d.e.f()Run Code Online (Sandbox Code Playgroud)
失败script error 但正确显示错误消息?
出于安全原因,浏览器有意隐藏来自不同来源的脚本文件的错误。在这种情况下,由于 CORS 设置,返回的错误JSON.parse被视为不同的来源,因此被浏览器隐藏。
但是,当您使用 封装时try\catch,您的代码会引发错误:
try {
JSON.parse("")
} catch(e) {
// your browser see an error thrown from here : your code
throw e;
}
Run Code Online (Sandbox Code Playgroud)
因此,您的 chrome 浏览器无法识别来自其他来源的错误,这与a.b.c.d.e.f()正确显示错误的原因相同:它被识别为您的代码抛出的错误。
请注意,浏览器具有不同的 CORS 策略规范和实现(和错误),因此它们的行为可能与此处不同。
您可以在此处了解有关此特定脚本错误的更多信息:https : //blog.sentry.io/2016/05/17/what-is-script-error