Skip to content

@utilslib/core/catchError


通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。


catchError

函数签名

typescript
function catchError<F extends AnyFunction>(fn: F): (
  this: unknown,
  ...args: Parameters<F>
) => Promise<[0, Awaited<ReturnType<F>>, null] | [1, null, unknown]>

描述

通用错误捕获包装器,返回一个包装后的函数,该函数执行时会自动捕获异常。

类型参数

参数名约束默认值描述
FAnyFunction--

参数

参数名类型可选默认值描述
fnF--

返回值

( 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 :::