Po co jest else przy try-except?

0

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).

1

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.

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1