Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: try: en finally: in python  (gelezen 1905 keer)

try: en finally: in python
« Gepost op: 2017/05/16, 16:49:08 »
Wat is eigenlijk het nut van try: en finally:  in een python programma. (zie attachment)

Kan ik die niet net zo goed  weglaten?
𝕸𝖎𝖘𝖈𝖊𝖗𝖊 𝖚𝖙𝖎𝖑𝖊 𝖉𝖚𝖑𝖈𝖎. (Ter leering ende vermaeck)
𝕹𝖎𝖑 𝖛𝖔𝖑𝖊𝖓𝖙𝖎𝖇𝖚𝖘 𝖆𝖗𝖉𝖚𝖚𝖒. (Niets is moeilijk voor hen die willen)
https://henk.oegema.com  (Op RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  24.04 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & TELLO drone (voor AI)

Re: try: en finally: in python
« Reactie #1 Gepost op: 2017/05/16, 19:50:55 »
Citaat
A finally clause is always executed before leaving the try statement, whether an exception has occurred or not.
bron: https://docs.python.org/3.4/tutorial/errors.html

Try, except en finally zorgen ervoor dat je fouten die optreden binnen dat blok netjes kan afhanelen zonder dat de applicatie er 'uitklapt'. Met finally kun je nog opruimacties verrichten zoals in jouw voorbeeld. Deze actie wordt altijd uitgevoerd, dus ook als er een fout is opgetreden die je hebt afgevangen. Maar zelfs wanneer je geen fout hebt afgevangen maar er wel één optreedt (in dat geval wordt eers het finally-blok uitgevoerd en daarna alsnog de foutmelding naar boven gegooid). Zonder finally zou GPIO.cleanup() niet worden aangeroepen indien er een niet afgevangen fout optreedt in de code ervoor.

« Laatst bewerkt op: 2017/05/16, 19:54:38 door erik1984 »

Re: try: en finally: in python
« Reactie #2 Gepost op: 2017/05/16, 21:00:14 »
Citaat
A finally clause is always executed before leaving the try statement, whether an exception has occurred or not.
bron: https://docs.python.org/3.4/tutorial/errors.html

Try, except en finally zorgen ervoor dat je fouten die optreden binnen dat blok netjes kan afhanelen zonder dat de applicatie er 'uitklapt'. Met finally kun je nog opruimacties verrichten zoals in jouw voorbeeld. Deze actie wordt altijd uitgevoerd, dus ook als er een fout is opgetreden die je hebt afgevangen. Maar zelfs wanneer je geen fout hebt afgevangen maar er wel één optreedt (in dat geval wordt eers het finally-blok uitgevoerd en daarna alsnog de foutmelding naar boven gegooid). Zonder finally zou GPIO.cleanup() niet worden aangeroepen indien er een niet afgevangen fout optreedt in de code ervoor.

Duidelijk.    :)
𝕸𝖎𝖘𝖈𝖊𝖗𝖊 𝖚𝖙𝖎𝖑𝖊 𝖉𝖚𝖑𝖈𝖎. (Ter leering ende vermaeck)
𝕹𝖎𝖑 𝖛𝖔𝖑𝖊𝖓𝖙𝖎𝖇𝖚𝖘 𝖆𝖗𝖉𝖚𝖚𝖒. (Niets is moeilijk voor hen die willen)
https://henk.oegema.com  (Op RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  24.04 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & TELLO drone (voor AI)