gpt4 book ai didi

javascript - 关于在 JavaScript 中用 "try catch"包装每个方法的性能问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:20:27 25 4
gpt4 key购买 nike

我想知道您对我制作的函数的看法,该函数包装对象的每个方法,添加“try catch”处理程序以在服务器端记录 JavaScript 错误。

我不想使用 window.onerror,因为这个 security restriction ,我的脚本将托管在 CDN 的不同域中。

/*
* object: Object to be wrapped
* errorHandler: Instance of ErrorHandler Object
*/
function addLog(object, errorHandler) {
var name, method;

for (name in object) {
method = object[name];
if (typeof method === "function") {
object[name] = function(method, name) {
return function() {
try {
return method.apply(this, arguments);
} catch (ex) {
ex.message += "; method: '" + name + "'";
errorHandler.addToStack(ex.message);
throw ex;
}
};
}(method, name);
}
}
return object;
}

errorHandler.addToStack 是自定义对象上的一种方法,它使用 Ajax 消息将错误报告异步发送到服务器。

我想用这个函数包装在我的应用程序上实例化的每个对象,但我不确定是否:

  • 这是一种不好的做法吗?
  • 它有性能问题吗?
  • 是否有更好的方法来做到这一点?

提前致谢!

最佳答案

我认为最好的方法是通过添加验证和检查来防止错误发生,从而避免使用 try catch 语句,但如果您真的需要这样做,我认为它不会产生很大的性能问题。

这里我做了一个jspref测试测量,仅在IE下有差异,但不是很显着。

我不知道 errorHandler 方法是否存在性能问题或减慢您的代码速度,但如果它是异步的,我想这不会成为问题。

关于javascript - 关于在 JavaScript 中用 "try catch"包装每个方法的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com