当前位置: 首页 > 知识库问答 >
问题:

如何使用groovy在try-catch块中尝试这段代码?[副本]

贺海
2023-03-14

我已经定义了尝试推送的方法,如果在推送字符串时出现任何错误,如果推送失败,代码将执行3次。所以我想要的是,如果在第三次推送重试后失败,它应该抛出一个推送失败的异常。如何使用try catch块重写此代码。

def push(String string) {

        echo "push method start............"
        int count = 0;
        def status = sh(returnStatus: true, script: "${string}")
        while(count<=2 && status != 0) {
                sh "sleep 10"
                ++count;
                echo "push : $count" 
                def status1 = sh(returnStatus: true, script: "${string}")
                if (status1 == 0) {
                echo "push : $count is success" 
                break
                }    

        }
        echo "dockerPushAndRetry method ends............" 

}

return this

共有1个答案

岳佐
2023-03-14

没有try-catch代码可能更简单:

def dockerPushAndRetry(String image) {
    for(int i=0;i<3;i++){
        if( 0==sh(returnStatus: true, script: "${image}") )return
        Thread.sleep(10000) // 10 sec
    }
    error "error to run ${image}, please read logs..."
}

如果你想使用try-catch...

如果没有returstatussh步骤将抛出异常,因此代码可能如下所示:

def dockerPushAndRetry(String image) {
    int count = 3
    for(int i=0;i<count;i++){
        try {
            sh(script: "${image}")
            return
        }catch(e){
            if(i==count-1)throw e
        }
        Thread.sleep(10000) // 10 sec
    }
}
 类似资料:
  • 我有一个包含两个方法的类,每个方法都有一个try-catch块来查找任何异常。 代码如下: 我提出了一个测试用例,使用Mokito来测试上述场景,但不知道如何进入上述的catch块 我试图提出一个NullPointerException,但catch块仍然没有出现在CodeOverage中(我假设它没有经过测试)。请帮我写一个Junit测试用例来输入异常。我对所有这些话题都很陌生。

  • 问题内容: 好的,这可能是一个非常愚蠢的问题,但是我发现关于此的PHP文档以及一些Internet搜索并没有使我对此有所任何了解。 什么时候应该使用try-catch块来改进我的应用程序? 我读过有人说我们应该仅使用try- catch块来防止致命错误。我读过别人的话说,我们应该只在意外错误上使用它(等什么?意外?如果它们是意外错误,如何使用try- catch防止它们出现?我应该将所有应用程序代

  • 我有一个try/catch块,我已将其写入JetBrains网络StormIDE,它会给我一个错误。错误如下:“本地捕获的异常的‘抛出’/此检查报告任何JavaScript抛出语句的实例,其异常总是通过包含try语句来捕获。使用抛出语句作为“goto”来更改本地控制流可能会令人困惑。” 如果我将活动从捕获块放入尝试块的 if 块中,那么我将不需要尝试/捕获/最终。那么,除了条件语句(if)之外,你

  • 问题内容: 我一直在PHP代码中使用try..catch块,但不确定是否已正确使用它们。 例如,我的一些代码如下所示: 因此,我将多个数据库操作分组在同一try / catch块中,因为如果任何事务中发生任何异常,我将能够处理它。 我这样做是因为我认为它比: 虽然,我不确定我在做什么是好的习惯还是只是捕获异常的一种懒惰方式。 我的假设是,仅当异常需要特殊处理时,它才应具有自己的try / catc

  • 问题内容: 我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下 但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示: 我希望有人能够解释为什么