jenkins 如何尝试捕获实际错误而不是哈德逊,AbortException

nr9pn0ug  于 2023-01-20  发布在  Jenkins
关注(0)|答案(2)|浏览(277)

我在jenkins文件中使用try catch来检查是否抛出了特定的错误以及它是否执行了某些功能

try {
      // code that throws an error

    } catch (ex) {
      echo 'an error occurred'
      echo "ex: ${ex}"
      if (ex == Exception1) {
         // do stuff
      }

      if (ex == Exception2) {
        // do other stuff
      }
    }

我的问题是,被捕获的错误是哈德逊.AbortException,消息是“脚本返回退出代码1”。
如何捕获抛出的实际错误,而不是哈德逊/jenkins Package 器?

yizd12fk

yizd12fk1#

如果使用语法sh script运行shell脚本:'echo hello'参考
然后你应该用set + e和set-e来运行它,就像参考文档中提到的那样。2这里set + e和set-e会让程序继续运行,即使你在其间遇到错误,你应该在shell中处理它。3如果在shell中使用2〉&1,返回的值也会包含错误。
如果这个返回值包含Exception,您可以在try本身中引发单独的错误。
例如:

try{
    def returnedVal = sh script: 'some exception raising code'
    if (returnedVal.toLowerCase().contains('exception1')){
        error("got Exception1")
    }
} catch(Excpetion ex){
    //handle Exception
}
11dmarpk

11dmarpk2#

“script returned exit code 1”实际上是错误消息。您应该检查正在运行的脚本并修改它,以便在退出前打印内部脚本错误

相关问题