问题
这是一个简单的ts示例:
1 | import os from "os"; |
请分析当编译成cjs时运行node index.js时当$HOME/clang和$HOME/gcc-64都不存在时是否会报错。
解答
答案:不会。
假设io.which
方法正常工作,如果两个路径$HOME/gcc-64/bin
和$HOME/clang/bin
都不存在,则io.which
返回的是undefined
或者false
,因此两个条件判断都不满足,函数将直接结束执行,并不会执行await exec.exec(...)
语句,也就不会抛出错误。
在这种情况下,如果io.which
方法和exec.exec
方法实现都是正确的,只有在尝试执行不存在的路径时才会报错。但代码中并没有提供发生错误时的处理,只是在最外层的自调用匿名函数中捕获异常,并打印“Failed to run post step.”。如果异常未被内部try-catch
正确处理,确实会导致运行时报错。
因此,如果其他部分实现正确,环境不存在导致的错误会被内部逻辑处理,不会向用户抛出异常。
解决方法:
将
1 | console.log("Failed to run post step."); |
改成
1 | console.error("Failed to run post step."); |
-------------本文结束感谢您的阅读-------------