我有一个将错误处理程序附加到给定函数的装饰器。装饰器接受对名为errorHandlerManager
的自定义对象的引用,该对象基本上在错误类型和错误处理程序函数之间保持映射。当修饰的函数引发给定类型的错误时,将调用与此类型关联的处理函数。
function handleErrors(errorHandlerManager: IErrorHandlerManager) {
return (target: any, key: string | symbol, descriptor: PropertyDescriptor) => {
const fn = descriptor.value;
descriptor.value = function (...args: any[]) {
return new Promise((resolve, reject) => {
fn.apply(this, args)
.then((result: any) => {
resolve(result);
})
.catch((err: Error) => {
let handler = errorHandlerManager.getHandler(err.constructor.name);
if (typeof handler === 'function') {
handler();
} else {
reject(err);
}
});
});
}
};
}
// ...
@handleErrors(errorHandlerManager)
async loadData() {
// Do something that might throw an error
}
我的问题是此装饰器的专有名称是什么?我在考虑errorHandler
,但听起来有些混乱,因为可能会认为错误处理程序是修饰函数。还有其他建议吗?