2013-08-21 2 views
1

J'essaie de gérer l'exception jira-python mais mon essai, sauf ne semble pas l'attraper. J'ai également besoin d'ajouter plus de lignes afin de pouvoir poster ceci. Donc, ils sont là, les lignes.Attraper une exception jira-python

try: 
    new_issue = jira.create_issue(fields=issue_dict) 
    stdout.write(str(new_issue.id)) 
except jira.exceptions.JIRAError: 
    stdout.write("JIRAError") 
    exit(1) 

Voici le code qui soulève l'exception:

import json 


class JIRAError(Exception): 
    """General error raised for all problems in operation of the client.""" 
    def __init__(self, status_code=None, text=None, url=None): 
     self.status_code = status_code 
     self.text = text 
     self.url = url 

    def __str__(self): 
     if self.text: 
      return 'HTTP {0}: "{1}"\n{2}'.format(self.status_code, self.text, self.url) 
     else: 
      return 'HTTP {0}: {1}'.format(self.status_code, self.url) 


def raise_on_error(r): 
    if r.status_code >= 400: 
     error = '' 
     if r.text: 
      try: 
       response = json.loads(r.text) 
       if 'message' in response: 
        # JIRA 5.1 errors 
        error = response['message'] 
       elif 'errorMessages' in response and len(response['errorMessages']) > 0: 
        # JIRA 5.0.x error messages sometimes come wrapped in this array 
        # Sometimes this is present but empty 
        errorMessages = response['errorMessages'] 
        if isinstance(errorMessages, (list, tuple)): 
         error = errorMessages[0] 
        else: 
         error = errorMessages 
       elif 'errors' in response and len(response['errors']) > 0: 
        # JIRA 6.x error messages are found in this array. 
        error = response['errors'] 
       else: 
        error = r.text 
      except ValueError: 
       error = r.text 
     raise JIRAError(r.status_code, error, r.url) 
+1

Mon plus gros problème avec cette bibliothèque est que personne ne semble savoir comment l'utiliser! Avez-vous déjà résolu ce problème? –

Répondre

2

Je peux me tromper, mais ressemble à vous attraper jira.exceptions.JIRAError, tout en augmentant JIRAError - ce sont les différents types. Vous devez soit supprimer "jira.exceptions." partie de votre déclaration except, soit augmenter jira.exceptions.JIRAError à la place.

1

Peut-être qu'il est évident et c'est la raison pour laquelle vous ne l'avez pas dans votre pâte de code, juste au cas où, vous n'avez

from jira.exceptions import JIRAError 

quelque part dans votre droit de code?

Ne pas avoir assez de réputation pour les commentaires donc je vais l'ajouter réponse pour @arynhard: J'ai trouvé les docs très légers en particulier en termes d'exemple, vous pourriez trouver les scripts dans ce repo utiles car ils sont tout en tirant parti de jira-python d'une façon ou d'une autre. https://github.com/eucalyptus/jira-scripts/

1

Ok c'est un très vieux mais j'ai fait face au même problème et cette page est toujours en train d'apparaître.

Voici comment je piège l'exception, j'ai utilisé l'objet Exception.

try: 
     issue = jira.issue('jira-1') 
except Exception as e: 
     if 'EXIST' in e.text: 
       print 'The issue does not exist' 
       exit(1) 

ce qui a trait

2

Je sais que je ne réponds pas à la question, mais je sens que je dois avertir les gens qui pourraient se confondre par ce code (comme je l'ai fait) ... Peut-être que vous essaient écrire votre propre version de jira-python ou c'est une ancienne version?

Dans tous les cas, here le lien vers le code JIRA-python pour la classe JIRAError et here la liste des codes

pour attraper l'exception de ce paquet que j'utilise le code ci-dessous

from jira import JIRA, JIRAError 
try: 
    ... 
except JIRAError as e: 
    print e.status_code, e.text 
+0

Merci, cela m'a aidé! –

Questions connexes