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