如何在以下节点功能上添加异常或管理错误?

时间:2019-02-08 17:02:16

标签: node.js

这是我的原始代码:

function extract_number(conv){
    const regex = /(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/
    const result = conv.match(regex)
    const value = result[0]
    console.log(value);
    return value
}

但是随着字符串的下降,它不包含要提取的数字 这里是示例:

extract_number('my number is')

我试图按如下方式捕获错误:

function extract_number(err,conv){
    if (err) {
        const regex = /(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/
        const result = conv.match(regex)
        const value = result[0]
        console.error('There was an error', err);
    }
        console.log(value)
        return value
}

我知道了

/home/adolfo/node_js/index.js:61         const结果= conv.match(regex)                             ^

TypeError: Cannot read property 'match' of undefined
    at extract_number (/home/adolfo/node_js/index.js:61:29)
    at Object.<anonymous> (/home/adolfo/node_js/index.js:69:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

在seccond功能上,所以我想对此表示支持

2 个答案:

答案 0 :(得分:1)

Try..catch是你的朋友

function extract_number(conv){
   try{

      const regex = /(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/
    const result = conv.match(regex)
    const value = result[0]
    console.log(value);
    return value

     }catch(){
        return null

    }
}

答案 1 :(得分:0)

有不同的方法。您可以对result的长度,类型是否为Array和/或convnullundefined进行多次检查,并抛出该错误你的错误。或者,您可以按照指定的https://developer.oculus.com/documentation/unity/latest/concepts/unity-build-pc/进行try / catch,这可能是完成您要尝试的操作的最简单方法。

function extract_number(conv){
  const regex = /(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/
  let value;
  try {
    const result = conv.match(regex)
    value = result[0]
  } catch (err) {
    console.error('There was an error', err);
  }
    console.log(value);
    return value
}