try, except, else, finally

Obsługa wyjątków: przechwytywanie błędów bez przerywania programu.

Na tej stronie

Przykład

#
Python
def to_points(text):
    try:
        value = int(text)
    except ValueError:
        print(f"'{text}' to nie liczba")
        return 0
    else:
        return value
    finally:
        print("Sprawdzono:", text)

print(to_points("42"))
print(to_points("czterdzieści"))
Wynikzapisany wynik, możesz go sprawdzić
Sprawdzono: 42
42
'czterdzieści' to nie liczba
Sprawdzono: czterdzieści
0

Definicja i zastosowanie

#

Blok try zawiera kod, który może zgłosić wyjątek. Jeśli błąd wystąpi, Python przechodzi do pasującego bloku except, zamiast przerywać program. Możesz obsługiwać różne typy wyjątków w osobnych blokach.

Opcjonalny blok else wykonuje się tylko wtedy, gdy w try nie było błędu, a finally wykonuje się zawsze, niezależnie od wyniku. finally służy do sprzątania, na przykład zamknięcia połączenia.

Przechwytuj konkretne wyjątki, takie jak ValueError czy KeyError. Gołe except: łapie wszystko, także przerwanie programu przez użytkownika, i ukrywa prawdziwe błędy.

Składnia

#
Składnia
try:
    ...
except TypWyjatku as error:
    ...
else:
    ...
finally:
    ...

Więcej przykładów

#
Kilka typów wyjątków
Python
scores = {"ania": 92}

for key in ["ania", "kuba"]:
    try:
        print(100 / scores[key])
    except KeyError as error:
        print("Brak ucznia:", error)
    except ZeroDivisionError:
        print("Dzielenie przez zero")
Wynikzapisany wynik, możesz go sprawdzić
1.0869565217391304
Brak ucznia: 'kuba'

Dobre praktyki

#
  • Łap tylko te wyjątki, które umiesz sensownie obsłużyć. Resztę pozwól zgłosić dalej.
  • Blok try trzymaj krótki: tylko linie, które naprawdę mogą zgłosić obsługiwany błąd.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.