% Programmation avec Python (chapitre 10) % Dimitri Merejkowsky
\center \huge Exceptions
def une_fonction():
return 1 / 0
def une_autre_fonction():
une_fonction()
une_autre_fonction()
Traceback (most recent call last):
File "foo.py", line 7, in <module>
une_autre_fonction()
File "foo.py", line 5, in une_autre_fonction
une_fonction()
File "foo.py", line 2, in une_fonction
return 1 / 0
ZeroDivisionError: division by zero
def une_fonction(diviseur):
return 1 / diviseur
def une_autre_fonction():
une_fonction(diviseur=0)
une_autre_fonction()
Traceback (most recent call last):
File "foo.py", line 7, in <module>
une_autre_fonction()
File "foo.py", line 5, in une_autre_fonction
une_fonction(diviseur=0)
File "foo.py", line 2, in une_fonction
return 1 / diviseur
ZeroDivisionError: division by zero
def retirer_somme(compte, montant):
solde = ...
if montant >= solde:
raise ValueError("montant supérieur au solde!")
try:
a = 1 / 0
this_will_never_happen()
except ZeroDivisionError:
print("someone tried to divide by zero!")
except
try:
something_dangerous()
except ZeroDivisionError:
print("tried to devide by zero")
except FileNotFoundError:
print("file not found")
Attention aux bare except
À connaître À utiliser si vous faites une librairie.
Watch Before You Leap Easier to Ask for Forgiveness than Permission
fichiers encore:
if exists():
if pas_un_dossier():
if j_ai_les_droits_en_lecture():
open(filename):
try:
open(filename):
catch IOError:
...
if truc:
if machin:
for bidule in chose:
raise MyError("kaboom!")
if truc:
if machin:
try:
for bidule in chose:
raise MyError("kaboom!")
except:
...
if truc:
try:
if machin:
for bidule in chose:
raise MyError("kaboom!")
except:
...
as
args