IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Erreurs et Exceptions: try except


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut Erreurs et Exceptions: try except
    Bonjours a tous!

    Je fait du Python depuis un petit moment déja et je n'arrive pas à comprendre la gestion des erreurs (dont tout le monde semble faire les éloges).

    Je dois surement mal m'y prendre ainsi je vous sollicite pour m'expliquer comment "gérer mon erreur", voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import sys
     
    if len(sys.argv) > 2:
    	"on arrete de massacre"
    Voila, c'est tout con mais je n'ai toujours pas compris comment arrêter le code et renvoyer un message d'erreur...

    Je fait du MEL à la base et il suffit d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error ("blabla error oulala pas bien...");
    Donc voila... Si vous pouviez m'aider (et m'expliquer brievement le fonctionnement du try except parce que j'ai beau avoir lu des trucs partout, je saisi pas bien la logique).

    Merci d'avance et bonne journée!


  2. #2
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    bonjour.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  3. #3
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Merci beaucoup
    Il semble cependant qu'il faille utiliser "raise" dans un try except.
    J'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    raise "myError"
    TypeError: exceptions must derive from BaseException
    On dirait que ça plante à cause de raise et non qu'il s'agit d'un arret voulu.

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    A partir d'une certaine version de Python, on ne peut plus utiliser directement un string mais il faut passer par une classe "Exception"
    Une manière simple est de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    raise Exception, "MyError"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    Bonjour, bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import sys
     
    if len(sys.argv) > 2:
    	raise "on arrete de massacre"
    Ceci marche...
    Sinon pour ce qui est du try except...
    Ca marche assez simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    try : 'a'+1
    except TypeError: print 'on peut pas concatener des int et des str voyons...'
    except : print 'Erreur inattendue'
    Il essaye de faire 'a'+1, si il n'y arrive pas il soulève une exception.
    Si c'est une TypeError il écrira on peut pas concatener des int et des str voyons...
    Sinon il écrira Erreur inattendue.

    Voila le peu que je sais... peut etre que ca t'aidera

    TeqPAF

  6. #6
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Merci de vos réponse
    Citation Envoyé par Guigui_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    raise Exception, "MyError"
    Quand je fait ça, ça me renvois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        raise Exception, "MyError"
                       ^
    SyntaxError: invalid syntax
    Et quand je vire la virgule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        raise Exception "MyError"
                                ^
    SyntaxError: invalid syntax
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import sys
     
    if len(sys.argv) > 2:
    	raise Exception, "MyError"
    Vraiment je ne comprend pas. Je suis en Python 3.0 (Ça change peut être quelque chose... )
    Citation Envoyé par Tequilapaf Voir le message
    Bonjour, bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import sys
     
    if len(sys.argv) > 2:
    	raise "on arrete de massacre"
    Ceci marche...
    En effet, le script s'arrete mais le message d'erreur renvoyé est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        raise "MyError"
    TypeError: exceptions must derive from BaseException
    C'est pas franchement la gloire.
    Citation Envoyé par Tequilapaf Voir le message
    Sinon pour ce qui est du try except...
    Ca marche assez simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    try : 'a'+1
    except TypeError: print 'on peut pas concatener des int et des str voyons...'
    except : print 'Erreur inattendue'
    Il essaye de faire 'a'+1, si il n'y arrive pas il soulève une exception.
    Si c'est une TypeError il écrira on peut pas concatener des int et des str voyons...
    Sinon il écrira Erreur inattendue.

    Voila le peu que je sais... peut etre que ca t'aidera

    TeqPAF
    En fait, si je pouvais avoir l'utilisation du try except dans mon cas ça m'aiderai surement bcp!
    J'ai l'impression que le try except permet surtout de "gérer" les erreurs et d'éviter les plantages "méchant" mais il ne permet pas de créer un arret du programme suite à une exception (du genre: if len(sys.argv) > 2 -> J'arrete et j'affiche un message perso).

    Merci d'avance (très réactif ce forum, bravo à la communauté).


  7. #7
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Effectivement, ce que je t'ai donné marche avec Python 2.6
    Pour python 3, le système a un peu changé
    http://docs.python.org/3.1/whatsnew/...-to-exceptions
    http://docs.python.org/3.1/library/exceptions.html

    un truc du genre devrait marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    raise Exception("Erreur")

  8. #8
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Super c'est exactement ce qu'il me faut!

    Merci à vous!

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2013, 17h34
  2. Réponses: 10
    Dernier message: 13/01/2012, 09h22
  3. Code erreur d'un Try, Catch (exception e)
    Par davelop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/10/2008, 19h00
  4. Réponses: 5
    Dernier message: 14/09/2007, 22h50
  5. "try...except" sans message d'erreur
    Par SchpatziBreizh dans le forum Langage
    Réponses: 4
    Dernier message: 12/07/2005, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo