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