您可以简单地用创建的包装器替换命名空间中的每个函数Raven.wrap()
:
// Do not catch global errors
Raven.config(..., {collectWindowErrors: false}).install()
// Helper to catch exceptions for namespace
function catchInNamespace(ns)
{
for (var key in ns)
{
if (ns.hasOwnProperty(key) && typeof ns[key] == "function")
ns[key] = Raven.wrap(ns[key]);
}
}
// Declaration of namespace Foo
var Foo = Foo || {};
Foo.func1 = ...;
Foo.func2 = ...;
catchInNamespace(Foo);
// Using namespace
Foo.func1(); // Any exceptions here are caught by Raven.js
请注意,collectWindowErrors: false
需要配置选项来忽略来自其他命名空间和全局函数的错误,没有它,Raven.js 将隐式捕获所有异常。此选项已在 Raven.js 1.1.0 中引入,但由于某种原因仍未记录。