尝试调用函数

尝试使用提供的参数调用函数,并返回结果或捕获的错误对象。

  • 使用try...catch块来返回函数的结果或适当的错误。
  • 如果捕获的对象不是Error,则使用它创建一个新的Error
const attempt = (fn, ...args) => {
  try {
    return fn(...args);
  } catch (e) {
    return e instanceof Error ? e : new Error(e);
  }
};

let elements = attempt(function(selector) {
  return document.querySelectorAll(selector);
}, '>_>');
if (elements instanceof Error) elements = []; // elements = []