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正常執行: