【发布时间】:2020-10-01 04:24:03
【问题描述】:
这里我有一个函数可以很好地捕捉同步错误,并在重新抛出它们之前对其进行处理。
function logExceptions<T extends (...args: any[]) => any>(func: T): (...funcArgs: Parameters<T>) => ReturnType<T> {
return (...args: Parameters<T>): ReturnType<T> => {
try {
return func(...args);
} catch (err) {
console.log(func.name + " caused an error")
throw err;
}
};
}
function syncExample() {
throw new Error()
}
logExceptions(syncExample)();
控制台日志
“syncExample 导致错误”
我可以重写此函数以使其与异步无关并且也适用于异步函数吗?
async function asyncExample() {
throw new Error()
}
logExceptions(asyncExample)();
所需的控制台.log
“asyncExample 导致错误”
实际的控制台日志
""
【问题讨论】:
-
"我可以重写此函数以使其与异步无关并且也适用于异步函数吗?" - 不。你应该为此编写一个单独的函数。
标签: typescript asynchronous async-await functional-programming