point
import sys
try:
f = open('myfile.txt')
s = f.readline()
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Les données ne peuvent pas être converties en un entier.")
except:
print("erreur inattendue: ", sys.exc_info()[0])
raise #Relancez l'exception pour que l'appelant puisse l'attraper
Attrapez plusieurs types d'exceptions
except(RuntimeError, TypeError, NameError):
pass
, une instance d'exception sera passée à ʻerr
.Clause else ajoutée
import sys
try:
f = open('myfile.txt')
s = f.readline()
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Les données ne peuvent pas être converties en un entier.")
except:
print("erreur inattendue: ", sys.exc_info()[0])
raise #Relancez l'exception pour que l'appelant puisse l'attraper
else:
print(s)
f.close()
point
augmenter le nom de l'exception (argument)
rise
dans la clause exceptpoint
Classe d'exception
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise MyError(2*2)
except MyError as e:
print('My exception occurred, value:', e.value)
#production
# My exception occurred, value: 4
raise MyError('oops!')
#production
# Traceback (most recent call last):
# File ".\exception_class.py", line 12, in <module>
# raise MyError('oops!')
# __main__.MyError: 'oops!'
point
enfin exemple
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("Erreur de division zéro")
else:
print('répondre: ', result)
finally:
print('in finally')
divide(2, 1)
#répondre: 2.0
# in finally
divide(2, 0)
#Erreur de division zéro
# in finally
divide("2", "1")
# in finally
# Traceback (most recent call last):
# File ".\divide.py", line 15, in <module>
# divide("2", "1")
# File ".\divide.py", line 3, in divide
# result = x / y
# TypeError: unsupported operand type(s) for /: 'str' and 'str'
point
with open('workfile', 'r') as f:
read_data = f.read()
print(f.closed)
# True
Recommended Posts