这是我的原始代码:
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功能上,所以我想对此表示支持
答案 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
和/或conv
是null
或undefined
进行多次检查,并抛出该错误你的错误。或者,您可以按照指定的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
}