我正在创建一个与数据库交互的nodejs应用程序(使用sequelize)。现在,我的要求是在数据库连接出现问题时提出警报(snmp陷阱)。
我可以通过使用.then()。catch()来实现这一点:
db.myModel.find(...)
.then(function() { //do some processing })
.catch (function(e) {
// TODO: write code to send an alert
// ...
})
上面代码的问题在于,无论我在哪里进行DB操作,我都必须在整个代码中重复几次。
我正在为javascript寻找更简单的AOP(面向方面编程)方式。实际上我找到了几个库(here和here),但是如果流程进入catch块,我找不到任何执行建议的方法。
如果是Java,我们有一个能够捕获异常切入点的工具。我想知道我们是否有类似的功能。
答案 0 :(得分:0)
在aopromise中,最新的(遗憾的是未记录的)功能之一是向建议添加错误处理程序组件。 In the tests有一个例子,第三个处理程序捕获在pre,fn或post阶段发生的每个错误。
这是一个创建记录器方面记录错误和“重新抛出”错误的示例。您可以在自己的实现中决定是否要处理错误或将错误转发给调用者。
module.exports = function LoggerAspect(options) {
return new AspectFrame(
function (preOpts) {
console.log(options || '', preOpts.originalFunction.name, 'was called with', preOpts.args);
},
function (postOpts) {
console.log(options || '', postOpts.originalFunction.name, 'returned with', postOpts.result);
},
function (err) {
console.error(options || '', postOpts.originalFunction.name, 'throw an exception with', err);
}
);
}