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