Obsługa prób/wyjątków i błędów w języku Python

Zapobiegaj awariom skryptów Pythona. Dowiedz się, jak blokować try, z wyjątkiem, wreszcie i jak prawidłowo zgłaszać wyjątki niestandardowe.

Spróbuj w Edytorze

Przegląd

W prawdziwym świecie programowania błędy są całkowicie nieuniknione. Pliki mogą zostać usunięte, połączenia sieciowe mogą zostać zerwane lub użytkownik może wprowadzić literę, gdy skrypt oczekiwał liczby. Jeśli te scenariusze wystąpią bez zabezpieczeń, Python wstrzymuje wykonanie i zgłasza wyjątek (błąd czasu wykonania), powodując awarię całego programu. Obsługa błędów to sztuka umiejętnego przewidywania i radzenia sobie z błędami.

Podstawą zarządzania błędami w Pythonie jest struktura bloków „try” i „except”. Umieszczasz potencjalnie niebezpieczny kod w bloku „try”. Python spróbuje go wykonać. Jeśli wystąpi błąd, zamiast się zawiesić, Python przechwytuje wyjątek i natychmiast skacze w dół, aby wykonać kod zawarty w bloku `except`. Dzięki temu program może odzyskać siły, wyświetlić przyjazny komunikat o błędzie i kontynuować działanie.

Najważniejszą najlepszą praktyką jest wychwytywanie konkretnych, ukierunkowanych wyjątków zamiast pisania ogólnego bloku „z wyjątkiem:”. Na przykład przechwycenie „FileNotFoundError” lub „ValueError” wyraźnie gwarantuje, że rozwiążesz dokładnie ten problem, którego się spodziewałeś, zamiast przypadkowo maskować niepowiązane błędy (takie jak błąd składni), o których naprawdę musisz wiedzieć.

Python udostępnia także opcjonalny blok „else”, który jest wykonywany tylko wtedy, gdy blok „try” zakończy się pomyślnie i nie spowoduje żadnych błędów. To idealne miejsce na umieszczenie logiki, która całkowicie zależy od powodzenia niebezpiecznej operacji. Dodatkowo blok „w końcu” umożliwia wykonanie kodu bez względu na to, co się stanie — niezależnie od tego, czy wystąpił błąd, czy nie. Blok „w końcu” jest niezbędny do działań porządkowych, takich jak zamykanie połączeń z bazą danych lub zwalnianie blokad plików.

Oprócz wyłapywania błędów, Python umożliwia programistom jawne wyzwalanie ich za pomocą słowa kluczowego „raise”. Zgłoszenie wyjątku umożliwia wymuszenie ścisłych ograniczeń w logice i odrzucenie nieprawidłowych danych, zanim uszkodzą one stan aplikacji. Definiując niestandardowe klasy wyjątków, które dziedziczą z podstawowej klasy Pythona „Exception”, programiści mogą tworzyć hierarchie błędów specyficzne dla domeny dla ogromnych aplikacji korporacyjnych.

Dane wyjściowe kodu i wykonania

Tworzenie bezpieczeństwa strukturalnego podczas interakcji z potencjalnie niebezpiecznymi lub nieistniejącymi strukturami plików.

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Error: Cannot divide by zero!"
    except TypeError:
        return "Error: Both arguments must be numbers."
    else:
        return f"The result is {result}"
    finally:
        print("Execution completed.")

print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
Wyjście terminala
Execution completed.
The result is 5.0
Execution completed.
Error: Cannot divide by zero!

Wdrażanie krok po kroku

  • Sprawdzanie poprawności przesłanych formularzy użytkownika
  • Zapewnienie, że żądania sieciowe nie ulegają awarii po przekroczeniu limitu czasu
  • Bezpieczne zamykanie połączeń z bazą danych w bloku final

Często zadawane pytania

Co to jest słowo kluczowe „podbić”?

Słowo kluczowe raise służy do celowego zgłaszania wyjątku. Możesz zdefiniować, jaki rodzaj błędu ma zostać zgłoszony i jaki tekst ma zostać wydrukowany użytkownikowi.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.