17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exceptions du langage<br />

Erreurs<br />

Les primitives<br />

CHAPITRE 6<br />

Voici l’ensemble des exceptions définies dans le langage, dérivant toutes de classes<br />

d’exceptions de base, présentées dans le chapitre précédent. On retrouve ces exceptions<br />

dans le module exceptions.<br />

On distingue deux types d’exceptions :<br />

Les erreurs qui provoquent l’arrêt de l’exécution du code et doivent être interceptées<br />

par une directive try..except.<br />

Les avertissements, dérivés de l’exception de base Warning, utilisés avec la fonction<br />

warn du module warnings, et qui se contentent dans ce cas d’afficher un message<br />

d’avertissement sans interrompre l’exécution du programme.<br />

À SAVOIR Les exceptions de type Warning<br />

Les exceptions de type Warning sont des exceptions comme les autres et provoquent l’arrêt de l’exécution<br />

du programme si elles sont utilisées directement avec une directive raise. Seule la fonction warn<br />

leur donne ce fonctionnement particulier.<br />

AssertionError<br />

La primitive assert() permet de contrôler qu’une expression renvoie True. Dans le<br />

cas contraire, une exception AssertionError est levée. Peut être utilisée pour valider<br />

des préconditions à l’exécution du code d’une fonction.<br />

Validation d’un précondition<br />

>>> def delta(a, b):<br />

... assert(a > b)<br />

... return a - b<br />

...<br />

>>> delta(10, 5)<br />

5<br />

>>> delta(2, 5)<br />

Traceback (most recent call last):<br />

File "", line 1, in ?<br />

File "", line 2, in delta<br />

AssertionError<br />

187

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!