在 JavaScript 中用“try catch”包装每个方法的性能问题
Performance concerns about wrapping every method with "try catch" in JavaScript
我想知道你对我做的一个函数的看法,它包装了一个对象的每个方法,添加"try catch"处理程序来记录服务器端的JavaScript错误。
由于此安全限制,我不想使用window.onerror
,并且我的脚本将托管在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 方法是否有性能问题或减慢您的代码速度,但如果它是异步的,我想这不会成为问题。
与Java等更严格的代码不同,Javascript不需要对大多数实例化对象进行try/catch。如果出现问题,它往往根本不起作用,并且不会爆炸或结束于您。
然而,某些部分确实会结束函数,因此更好的方法是用 try/catch 将代码作为一个整体包围起来,以便它静默失败,并使用 catch 在发送错误报告的同时调用原始代码。
您仍然可以使用全局 try/catch 将日志发送到服务器,因为异常对象包含信息。
但是错误对象在浏览器中不是标准的,我认为
相关文章:
- 文档.编写方法问题
- 使用Ajax的问题's发送多个值的Post方法
- 在对象中添加方法时出现问题
- 简单的javascript方法问题
- Node.js-异步方法调用问题
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 谷歌地图API v3 addDomListener方法问题
- 角度非幂等方法问题
- 如何使用 2 个表单集并保存它们(发布方法问题)
- Javascript Array.push 方法问题
- 在对象数组上划线查找方法问题
- Jquery.click()出现了一个unanonymus方法问题
- Javascript私有方法问题
- Javascript拼接方法问题
- Javascript对象方法问题
- Object.getPrototypeOf(0)方法问题
- Javascript:添加属性方法问题
- j查询切换方法问题
- Javascript RegExp - 测试方法问题
- 下拉菜单-单选按钮列表和Javascript方法问题