前言
异常处理作为每一个编程语言不可或缺的部分,是我们经常需要接触到的,在JS中常常需要重复编写try...catch内容,因此,我想到可以借助ES7中的Decorator来实现,就像JAVA中所说的面向切面编程。
实现方式
export default function log(options) {
return function(target, key, descriptor) {
const method = descriptor.value
descriptor.value = async function() {
let ret
try {
ret = await method.apply(this, arguments)
if (ret && ret.indexOf('noBuried') > -1) {
console.log('noBuried')
} else {
console.log('buried')
}
} catch (e) {
console.log(e)
}
return ret
}
}
}
其中target为decorator对应的方法,key为监听的方法名,descriptor则是类似Object.defineProperty中的装饰器属性,如writeable,readable等。
网友评论