2017-03-31 41 views
-1

次のようなスクリプトがあります。エラー処理を追加する必要があります。 URL api/xmlが見つからないことがあります。エラーにならないように修正するにはどうすればよいですか?Groovyスクリプトのエラー処理

def parameterName = "FRACTURE_NO"; 
def jenkinsUrl = System.getenv('JENKINS_URL'); 
def buildNumber = System.getenv('BUILD_NUMBER').toInteger(); 
def jobUrl = jenkinsUrl + "job/" + System.getenv('JOB_NAME'); 
def buildNumberUrl = jobUrl + "/" + buildNumber; 
def myParameter = System.getenv(parameterName); 

def projectXml = new XmlSlurper().parseText(new URL(jobUrl + "/api/xml").getText()); 
projectXml.build.each { 
    def previousBuildNumber = it.number.text().toInteger(); 
    if(previousBuildNumber < buildNumber) 
    { 
    def previousBuildNumberUrl = jobUrl + "/" + previousBuildNumber; 
    def jobXml = new XmlSlurper().parseText(new URL(previousBuildNumberUrl + "/api/xml").getText()); 
    if(jobXml.building.text() == "true") 
    { 
     jobXml.action.parameter.each { 
     if(it.name.text() == parameterName) { 
      if(it.value.text() == myParameter) { 
      def url = new URL(previousBuildNumberUrl + "/stop?token=spark123"); 
      def connection = url.openConnection(); 
      connection.setRequestProperty("Authorization", "Basic " + "wscott:26accfcc2cf8a1f3503ac4a70483b4fe".getBytes("UTF-8").encodeBase64()); 
      connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 
      connection.setRequestProperty("Accept", "*/*"); 
      connection.addRequestProperty("User-Agent", 
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
      connection.setRequestMethod("POST"); 
      connection.connect(); 
      connection.content.text; 
      println "Stopping " + previousBuildNumber; 
      } 
     } 
     } 
    } 
    } 
} 

答えて

0

try/catch構造を使用できます。このエラーは、httpレスポンスが404(見つからない)の場合にスローされる "FileNotFoundException"と考えられます。その他のエラーが可能性がありますので、私はあまりにも具体的でキャッチない「IOExceptionが」だろう、私はその呼び出しからのすべてのHTTPエラーをカバーだと思うどの:

try { 
    String xmlContent = new URL(previousBuildNumberUrl + "/api/xml").getText() 
} catch(IOException e) { 
    // handle error... 
} 

私はこの質問に多くの嫌なものがあるので、あなたがdownvoteだと思いますそれは抽象化されています。 How to create a Minimal, Complete, and Verifiable exampleをご覧ください。

編集:以下の質問に答えるには "IOException"で十分ですが、代わりに "Exception"を使用してすべてをキャッチすることができます...これは悪い習慣とみなされますが、プログラムで定義を処理することはできません。しかし、私はここで大きな懸念ではない疑いがあります。

+0

すべてのエラーをキャッチするために呼び出される例外名 – Jasmine