Skip to content

attempt

INFO

出于兼容性原因,此函数仅在 es-toolkit/compat 中提供。它可能具有替代的原生 JavaScript API,或者尚未完全优化。

es-toolkit/compat 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 这里

尝试使用提供的参数执行一个函数。 如果函数抛出错误,它会捕捉错误并返回错误。 如果捕获的错误不是Error实例,它会将其包装在一个新的Error中。

签名

typescript
function attempt<F extends (...args: any[]) => any>(func: F, ...args: Parameters<F>): ReturnType<F> | Error;

参数

  • func (F): 要执行的函数。
  • args (...Parameters<F>): 传递给函数的参数。

返回值

(ReturnType<F> | Error): 如果成功,返回函数的返回值;如果抛出异常,返回一个Error。

示例

typescript
// Example 1: Successful execution
const result = attempt((x, y) => x + y, 2, 3);
console.log(result); // Output: 5

// Example 2: Function throws an error
const errorResult = attempt(() => {
  throw new Error('Something went wrong');
});
console.log(errorResult); // Output: Error: Something went wrong

// Example 3: Non-Error thrown
const nonErrorResult = attempt(() => {
  throw 'This is a string error';
});
console.log(nonErrorResult); // Output: Error: This is a string error