在jenkins中处理外部命令7z的异常
powershell中有自己的异常捕获机制,但是在jenkins中处理第三方工具抛出的异常时,一直抓不到,疑惑了很久,本篇内容主要描述此次过程及解决方案。
powershell可以处理外部异常
try { .\7z.exe -tzip abx a.zip bcd #dcd不存在,此命令执行必定失败 } catch [System.Exception] { echo "异常捕获成功" }
执行结果:
将powershell代码移植到jenkins中,构建后查看结果:
结果:
【猜测】:可能是第三方工具7z命令重新启动了一个进程,而jenkins没有能捕获到这个异常。
换个思路:
7z执行后会返回退出码,我们可以利用退出码来判断7z是否执行成功。
根据上图可知,当退出码是0时,表示执行成功!
在powershell中如何获取返回码呢?
echo $LASTEXITCODE
在powershell中测试成功和失败的退出码:
将此方法应用到jenkins中
结果:
若需要隐藏输出结果,使用“2>&1”即可将正确错误的输出信息输入到某个文件中。
7z正常执行: