61 votes

Comment imprimer une exception en Python 3?

En ce moment, j'attrape l'exception dans la clause except Exception: , et je fais print(exception) . Le résultat ne fournit aucune information car il imprime toujours <class 'Exception'> . Je savais que cela fonctionnait en python 2, mais comment le faire en python3?

100voto

Noah Bogart Points 776

Je devine que vous devez assigner l' Exception à une variable. Comme indiqué dans le Python 3 tutoriel:

def fails():
    x = 1 / 0

try:
    fails()
except Exception as ex:
    print(ex)

Donner une brève explication, as est un pseudo-attribution de mot-clé utilisé dans certaines composé des déclarations de céder ou de l'alias de la précédente déclaration d'une variable.

Dans ce cas, as assigne à l'exception interceptée à une variable permettant d'informations sur l'exception d'stockées et utilisées plus tard, au lieu d'avoir besoin d'être traitée immédiatement. (Cette question est examinée en détail dans le Python 3 Langue de Référence: L' try Déclaration.)


L'autre composé de résultats en utilisant as est le with déclaration:

@contextmanager
def opening(filename):
    f = open(filename)
    try:
        yield f
    finally:
        f.close()

with opening(filename) as f:
    # ...read data from f...

Ici, with des déclarations sont utilisés pour envelopper l'exécution d'un bloc avec les méthodes définies par le contexte gestionnaires. Cela fonctionne comme une extension de try...except...finally déclaration dans un joli paquet de générateur, et l' as instruction assigne le générateur produites suite à partir du gestionnaire de contexte à une variable pour une utilisation prolongée. (Cette question est examinée en détail dans le Python 3 Langue de Référence: L' with Déclaration.)


Enfin, as peut être utilisé lors de l'importation de modules, à l'alias d'un module à un autre (généralement plus courte) nom:

import foo.bar.baz as fbb

Cette question est examinée en détail dans le Python 3 Langue de Référence: L' import Déclaration.

30voto

rigel Points 160

Ce sont les changements depuis python 2:

 try:
    1 / 0
except Exception as e: # (as opposed to except Exception, e:)
                       # ^ that will just look for two classes, Exception and e
    print(e) # for the repr
    print(str(e)) # for just the message
    print(e.args) # the arguments that the exception has been called with. 
                  # the first one is usually the message.
 

16voto

wpercy Points 6647

Essayer

 except Exception as e:
    print(e)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X