C'est assez intéressant, exécutons d'abord du code
1. Ce code signifie que vous n'avez pas à vous soucier du nombre de couches d'essai dont vous disposez. En fait, il vous suffit de comprendre pourquoi les exceptions ne sont pas levées, sauf
2. Ce code signifie que si finalement il y a une instruction return, aucune exception ne sera levée. S'il n'y a pas de retour, une exception sera levée
.
def bar():
a = 10
try:
print 1
raise
except:
print 2
raise
finally:
print 3
# return a
bar()
# 打印(抛出了异常):
# 2
# Traceback (most recent call last):
# 3
# File "/Users/xuxin/workplace/DailyScript/segmentfault/file_list_to_dict.py", line 23, in <module>
# bar()
# File "/Users/xuxin/workplace/DailyScript/segmentfault/file_list_to_dict.py", line 18, in bar
# raise ValueError()
# ValueError
3. Je l'ai vérifié et vu cet article pour enfin comprendre Python.
Il semble qu'après que f() ait lancé une exception, il exécute le retour dans except, mais il ne revient pas à l'appelant, mais "persiste" dans l'exécution du code dans finalement. À ce stade, je comprends enfin le vrai sens definally, c'est-à-dire que même si le retour a été effectué, le code final doit quand même être exécuté.
On peut aussi comprendre ici que s'il y a une instruction qui nécessite une méthode de sortie dans try, elle tentera de s'exécuter finalement. Si elle a finalement une méthode de retour, elle reviendra immédiatement et l'instruction de sortie précédente ne sera pas exécutée. À ce stade, nous pouvons jeter un œil à cette chaîne de code
def bar():
a = 10
try:
print 1
raise
finally:
print 3
return a
bar()
# 打印(没有抛出异常):
# 3
4. À ce stade, êtes-vous plus clair sur finalement~
Apprenez maintenant et vendez maintenant. S'il y a des erreurs, veuillez signaler la correction~
C'est assez intéressant, exécutons d'abord du code
1. Ce code signifie que vous n'avez pas à vous soucier du nombre de couches d'essai dont vous disposez. En fait, il vous suffit de comprendre pourquoi les exceptions ne sont pas levées, sauf
.2. Ce code signifie que si finalement il y a une instruction return, aucune exception ne sera levée. S'il n'y a pas de retour, une exception sera levée
.3. Je l'ai vérifié et vu cet article pour enfin comprendre Python.
On peut aussi comprendre ici que s'il y a une instruction qui nécessite une méthode de sortie dans try, elle tentera de s'exécuter finalement. Si elle a finalement une méthode de retour, elle reviendra immédiatement et l'instruction de sortie précédente ne sera pas exécutée.
À ce stade, nous pouvons jeter un œil à cette chaîne de code
4. À ce stade, êtes-vous plus clair sur finalement~
Apprenez maintenant et vendez maintenant. S'il y a des erreurs, veuillez signaler la correction~
Si une exception est levée à la fin, votre instruction except n'est-elle pas vaine ?