在jenkins中处理外部命令7z的异常

powershell中有自己的异常捕获机制,但是在jenkins中处理第三方工具抛出的异常时,一直抓不到,疑惑了很久,本篇内容主要描述此次过程及解决方案。


powershell可以处理外部异常

try
{
    .\7z.exe -tzip abx a.zip bcd  #dcd不存在,此命令执行必定失败
}
catch [System.Exception]
{
    echo "异常捕获成功"
}

 执行结果:

在jenkins中处理外部命令7z的异常_第1张图片

将powershell代码移植到jenkins中,构建后查看结果:

在jenkins中处理外部命令7z的异常_第2张图片

结果:

在jenkins中处理外部命令7z的异常_第3张图片

 

【猜测】:可能是第三方工具7z命令重新启动了一个进程,而jenkins没有能捕获到这个异常。

换个思路:

7z执行后会返回退出码,我们可以利用退出码来判断7z是否执行成功。

在jenkins中处理外部命令7z的异常_第4张图片

根据上图可知,当退出码是0时,表示执行成功!

在powershell中如何获取返回码呢?

echo $LASTEXITCODE

在powershell中测试成功和失败的退出码:

在jenkins中处理外部命令7z的异常_第5张图片

在jenkins中处理外部命令7z的异常_第6张图片

将此方法应用到jenkins中

在jenkins中处理外部命令7z的异常_第7张图片

结果:

在jenkins中处理外部命令7z的异常_第8张图片

若需要隐藏输出结果,使用“2>&1”即可将正确错误的输出信息输入到某个文件中。

 在jenkins中处理外部命令7z的异常_第9张图片

 在jenkins中处理外部命令7z的异常_第10张图片

 7z正常执行:

在jenkins中处理外部命令7z的异常_第11张图片

在jenkins中处理外部命令7z的异常_第12张图片

你可能感兴趣的:(在jenkins中处理外部命令7z的异常)