从以func为参数的func中获取异常

时间:2019-05-10 11:54:46

标签: javascript

我有一个函数a接受函数func作为参数并返回一个新函数

如何捕获函数a中的函数引发的错误,因为当函数返回异常时,我想从函数a返回null。在以下情况下也是如此

2 个答案:

答案 0 :(得分:4)

返回一个新函数,该函数调用包裹在func中的try..catch,并记住该函数之前是否有错误:

const a = func => {
    let hasThrown = false;

    return function () {
        if (hasThrown) {
            return null;
        }

        try {
            return func(...arguments);
        } catch (e) {
            console.error(e);
            hasThrown = true;
            return null;
        }
    };
};

const a = func => {
  let hasThrown = false;

  return function() {
    if (hasThrown) {
      return null;
    }
   
    try {
      return func(...arguments);
    } catch (e) {
      console.error(e);
      hasThrown = true;
      return null;
    }
  };
};

const getMyName = (name) => {
  if (name === "jos") {
    throw new Error(`${name} is wrong`);
  }
  return `${name} is yummy`;
};

const getName = a(getMyName);
console.log(getName("harry"));
console.log(getName("garry"));
console.log(getName("jos"));
console.log(getName("jon"));

答案 1 :(得分:0)

您可以将getCount()try内的catch包围

try {
    getCount()
} 
catch(e){
    console.log(e)
}