1
votes

Jenkinsfile: Pourquoi `java.lang.NoSuchMethodError: Aucune méthode DSL n'est interceptée?

J'ai le code suivant dans le Jenkinsfile qui appelle une méthode "optionnelle", et si elle n'existe pas, elle affichera simplement un message

...
try {
   verifyDeployment(pipelineParams)
} catch (err) {
   echo "[INFO] No `verifyDeployment` defined, thus ignoring this step"
}
...

Cependant, lorsque j'exécute le pipeline, le catch ne semble pas fonctionner à J'obtiens l'erreur suivante:

java.lang.NoSuchMethodError: Aucune méthode DSL de ce type 'verifyDeployment' n'a été trouvée parmi les étapes

Qu'est-ce que je rate?


3 commentaires

Vous utilisez une mauvaise syntaxe. Consultez la syntaxe groovy appropriée pour détecter les exceptions: tutorialspoint.com/groovy/groovy_exception_handling.htm


Merci, je n'ai pas réalisé que la syntaxe est incorrecte car dans certains cas, elle semble fonctionner. Fait intéressant également, les exemples montrent la même syntaxe que celle que j'utilise jenkins.io/doc/pipeline / steps / workflow-basic-steps


Veuillez ajouter votre commentaire comme réponse, afin que je puisse l'accepter et vous obtiendrez une récompense


3 Réponses :


0
votes

Il s'avère que vous devez explicitement attraper NoSuchMethodError comme suit

...
try {
   verifyDeployment(pipelineParams)
} catch (NoSuchMethodError ex) {
   echo "[INFO] No `verifyDeployment` defined, thus ignoring this step"
}
...


0 commentaires

1
votes

Vous utilisez une mauvaise syntaxe groovy. Consultez la syntaxe groovy appropriée pour détecter les exceptions: Syntaxe pour détecter les exceptions

try { 
   //Protected code 
} catch(ExceptionName e1) {
   //Catch block 
}


0 commentaires

0
votes

Vous pouvez également être plus générique avec le type catching et

catch (Throwable ex)

Voir la hiérarchie des types:

https://docs.oracle.com /javase/7/docs/api/java/lang/NoSuchMethodError.html

Mais assurez-vous de lire sur "la pratique de la capture jetable" et de décider si cela vous convient. J'attrape parfois jetable uniquement pour la journalisation suivie d'une relance.


0 commentaires