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?
Réponses
Trop de publicités?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.
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.