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.

Structuration du code<br />

CHAPITRE 5<br />

Il reste en outre possible d’appeler à nouveau une directive raise dans le bloc except<br />

(principe du reraise).<br />

Utilisation de try..except<br />

>>> try:<br />

... print(2 / 0)<br />

... except:<br />

... print('une erreur est survenue')<br />

...<br />

une erreur est survenue<br />

Cette écriture a cependant un inconvénient majeur : il est impossible de savoir quel type<br />

d’erreur est survenue dans le bloc. Cette protection aveugle peut entraîner des effets de<br />

bords dans la suite du programme en masquant silencieusement toutes les erreurs.<br />

Pour éviter ce problème, il est possible de préciser quelle classe d’exception est gérée<br />

par la directive except. Dans ce cas, le bloc sera ignoré si l’exception levée n’est pas<br />

du type indiqué.<br />

Typage de l’exception<br />

>>> try:<br />

... print(2 / 0)<br />

... except ZeroDivisionError:<br />

... print('+infini')<br />

...<br />

+infini<br />

En outre, il est possible d’associer plusieurs exceptions à un bloc except et<br />

d’enchaîner plusieurs blocs except.<br />

Série d’except<br />

>>> try:<br />

... print(a)<br />

... except ZeroDivisionError:<br />

... print('division par zéro')<br />

... except (AttributeError, NameError):<br />

... print('element non défini')<br />

...<br />

element non défini<br />

except peut aussi prendre un nom de variable en deuxième paramètre qui reçoit<br />

l’instance de l’exception levée.<br />

143

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

Saved successfully!

Ooh no, something went wrong!