try {
var output = child_process.execSync(cmd);
} catch (ex) {
return 0
}
return output.toString()
所以我想区分cmd =" lx -a"的情况,这是一个不正确的命令和cmd =" ls / home / dir"和/的情况home / dir是一个空目录,因此它不会生成任何内容或空字符串。 当我尝试它时,似乎两个案例都会被nodejs捕获为异常。
如何区分?我以为我可以编写像
这样的代码if (ex.message.indexOf("not found") >= 0)
但它只会覆盖一个命令本身不正确的情况,如果参数错误怎么办?或者错误消息未包含"未找到"?
的其他情况答案 0 :(得分:1)
从方法的文档:
如果进程超时,或者具有非零退出代码,则此方法 会扔。
Error
对象将包含整个结果child_process.execSync()
。
因此,如果不存在命令 - 它将抛出一个错误。
否则它将在output
中返回一个空字符串。
在output
之前将undefined
设置为try
,以便您可以检查错误。
答案 1 :(得分:0)
尝试对您的肯定案例使用switch case,并对其他任何cmd值使用默认值,默认情况下,您可以返回自定义值。