Dlaczego przy łapaniu wyjątków jest opcja else? Wiem że wykonuje ona kod gdy w bloku try nie znajdzie się wyjątek, ale ten sam kod z bloku else można chyba wrzucić w blok try i on też się wykona gdy nie będzie wyjątku (a część która jest za występującym wyjątkiem się nie wykona - tak samo jakby była w bloku else).
cukier skladniowy, przy if-else
else
tez jest generalnie zbedne :) mimo ze latwo da sie osiagnac ten sam efekt to bedzie to dluzsze, brzydsze i potencjalnie bledogenne.
No zależy o co pytasz.
Chcesz wiedzieć jakie były powody Twórców pythona że dodali taki feature? Czy chcesz wiedzieć czym się różnią te dwie konstrukcje języka między sobą?
Polecam przeczytać: https://docs.python.org/3/tutorial/errors.html Tam jest sekcja o try-except-else
.
kikimora5000 napisał(a):
Dlaczego przy łapaniu wyjątków jest opcja else? Wiem że wykonuje ona kod gdy w bloku try nie znajdzie się wyjątek, ale ten sam kod z bloku else można chyba wrzucić w blok try i on też się wykona gdy nie będzie wyjątku (a część która jest za występującym wyjątkiem się nie wykona - tak samo jakby była w bloku else).
Prawie!
Np taki przypadek:
try:
do_something()
except MyError:
print_error()
else:
do_something_else()
Owszem, możesz go zamienić na taki:
try:
do_something()
do_something_else()
except MyError:
print_error()
Ale wtedy, do_something_else()
też może rzucić MyError
i możesz nie chcieć go już łapać. I to w sumie jest jedyna różnica, że kod w try'u, owszem, możesz go tam wsadzić, żeby się "wykonał w przypadku kiedy poprzedni nie rzuci wyjątku", ale on również ten kod może rzucić ten sam wyjątek.