Javascript 从JS中的对象捕获错误

Javascript 从JS中的对象捕获错误,javascript,error-handling,Javascript,Error Handling,目前我有一个模块生成器。在这个精简版本的脚本中,主体单击将触发foo(),这将抛出一个错误。我想在整个模块对象上附加一个错误处理程序,以捕获其中抛出的任何内容,不仅是在创建期间,而且是在运行时。可能吗 目前,控制台中出现“foo alert”。我想抑制这一点,让一个中央记录器做必要的日志。在本例中,我希望看到的是“logged” 如果需要,您需要在每个代码执行级别添加try和catch 也就是说,在“定义”时,在构造函数(如果存在)、每个方法体和每个事件处理程序中 另外,也许这只是您的示例代码,

目前我有一个模块生成器。在这个精简版本的脚本中,主体单击将触发
foo()
,这将抛出一个错误。我想在整个模块对象上附加一个错误处理程序,以捕获其中抛出的任何内容,不仅是在创建期间,而且是在运行时。可能吗

目前,控制台中出现“foo alert”。我想抑制这一点,让一个中央记录器做必要的日志。在本例中,我希望看到的是“logged”


如果需要,您需要在每个代码执行级别添加
try
catch

也就是说,在“定义”时,在构造函数(如果存在)、每个方法体和每个事件处理程序中

另外,也许这只是您的示例代码,但是:

$('body').on('click', function() {foo()});
可能是这样的:

$('body').on('click',foo);

实际上,我不会控制创建的模块。但我是构建模块生成器脚本的人。这就是为什么我需要某种方式在创建模块对象时将“捕获”附加到模块对象本身,以便集中记录由模块引起的任何错误。在直接(而不是通过代码)绑定到事件处理程序的函数中,无法“捕获”错误。您无法从直接包含在文档中的脚本(您没有编写)中“捕获”错误。如果您可以访问构建的对象,并且重要属性(函数)不是“私有”(超出范围)然后,您可以用调用try-catch中原始函数的包装器替换这些函数属性。模块只是函数吗?或者它们是带有方法的对象?是的,
单击
事件处理程序还需要包含
try
/
catch
。由于你看不到这个范围,这是不可能的。你需要改变你的架构。也许可以构建一个API来创建对象、添加方法和注册事件处理程序(每个都作为单独的API方法)。
$('body').on('click',foo);