通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。
catchError
函数签名
typescript
function catchError<F extends AnyFunction>(fn: F): (
this: unknown,
...args: Parameters<F>
) => Promise<[0, Awaited<ReturnType<F>>, null] | [1, null, unknown]>描述
通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。
类型参数
| 参数名 | 约束 | 默认值 | 描述 |
|---|---|---|---|
F | AnyFunction | - | - |
参数
| 参数名 | 类型 | 可选 | 默认值 | 描述 |
|---|---|---|---|---|
fn | F | 否 | - | - |
返回值
( this: unknown, ...args: Parameters<F> ) => Promise<[0, Awaited<ReturnType<F>>, null] | [1, null, unknown]>
在线示例
点击查看源码
js
/**
* 通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。
*
* @param {F} fn - 需要包装的函数。
* @returns 返回一个新函数,执行时返回元组:[错误标识, 结果或null, 异常或null]。
*/
export function catchError(fn) {
return async function (...args) {
try {
return [0, await fn.apply(this, args), null];
} catch (error) {
return [1, null, error];
}
};
}ts
export type AnyFunction = (...args: any) => any;
/**
* 通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。
*
* @param {F} fn - 需要包装的函数。
* @returns 返回一个新函数,执行时返回元组:[错误标识, 结果或null, 异常或null]。
*/
export function catchError<F extends AnyFunction>(
fn: F,
): (
this: unknown,
...args: Parameters<F>
) => Promise<[0, Awaited<ReturnType<F>>, null] | [1, null, unknown]> {
return async function (this: unknown, ...args: Parameters<F>) {
try {
return [0, await fn.apply(this, args), null];
} catch (error) {
return [1, null, error];
}
};
}如有错误,请提交issue :::