【发布时间】:2016-02-18 15:16:54
【问题描述】:
我的情况
嗨,我对 Javascript 比较陌生,所以我的问题可能很简单。 我为我的公司开发了多个网络应用程序。我经常遇到的一个问题是 Javascript 错误。我知道如何使用 try/catch 处理它们。
我想做什么
我想要么在服务器上写一个日志文件,要么给用户一些他们可以在没有调试知识的情况下发送给我的东西。 这意味着,必须通知用户在这两种情况下都发生了错误。
我已经做过的事情
我的一个想法是使用 try catch 并使用我在这里找到的代码:https://stackoverflow.com/a/6055620/3581748 让用户可以向我发送堆栈跟踪。
例子:
<button id="demo" onClick="errorHandling()">Produce error</button>
<script>
function errorHandling() {
try {
document.getElementById("somethingNotExisting").value * 2;
} catch (_err) {
window.prompt("Copy to clipboard: Ctrl+C, Enter", _err.stack);
}
}
</script>
或在这里:https://jsfiddle.net/n79xv6nt/
最有效的方法。
问题
我有时会使用 jQuery 在我的“主”页面中嵌入脚本文件。 示例:
<div id="forScript"></div>
<script>
$("#forScript").load('scripts/additionalScript.php');
</script>
如果我使用上面的代码(“我已经做了什么”下面的代码)。我没有得到告诉我错误发生在哪里的堆栈跟踪。相反,它指向一个 jQuery 文件。 Google Chrome 控制台显示了真正的堆栈跟踪。 另一个问题是,在获得行号后如何获取文件?在我的 IDE 中,这些行是不同的,因为中间有 php。
我的问题
在这种情况下是否有可能得到一个好的错误消息? (最好不用自己抛出错误) 如何访问附加脚本并查看 chrome 看到的相同行号? 以及如何通知用户/记录错误?
【问题讨论】:
-
您缺少结束语:
load('scripts/additionalScript.php) -
您可以使用errbit.github.io/errbit 之类的东西来收集您的错误,而不需要最终用户为您做任何事情。
-
看起来你是在 not the only one 询问。除非有人有一个聪明的答案,否则这将是避免使用 jquery .load() 的充分理由。承诺会解决很多这样的混乱,但不是今天或明天。
-
根据 mdn 非标准但值得一看 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
@Jai,我想这就是他已经在做的事情了?
标签: javascript jquery error-handling