Obsługa wielu wyjątków
Część sekcji Logika i przepływ programu ścieżki Python w Coddy. Lekcja 65 z 78.
W Pythonie możemy obsługiwać różne typy wyjątków w osobnych blokach except. Dzięki temu możemy reagować różnie w zależności od konkretnego błędu, który wystąpi.
Zacznij od podstawowej struktury try-except:
try:
# Kod, który może zgłaszać wyjątki
pass
except Exception as e:
# Obsłuż dowolny wyjątek
passAby obsłużyć wiele wyjątków, dodaj konkretne bloki except:
try:
number = int(input("Enter a number: "))
result = 10 / number
print(result)
except ValueError:
print("That's not a valid number!")
except ZeroDivisionError:
print("Cannot divide by zero!")Możesz też przechwycić kilka typów wyjątków w jednym bloku except:
try:
# Jakiś kod
pass
except (ValueError, TypeError):
print("Invalid input type!")Kolejność bloków except ma znaczenie — zawsze umieszczaj bardziej szczegółowe wyjątki przed bardziej ogólnymi.
Wyzwanie
ŁatwyUtwórz funkcję o nazwie process_data, która:
- Przyjmuje ciąg znaków reprezentujący potencjalne dane
- Próbuje przekonwertować go na liczbę całkowitą, a następnie oblicza 100 podzielone przez tę liczbę całkowitą
- Zwraca wynik
- Obsługuje co najmniej 3 możliwe wyjątki:
ValueError, jeśli dane wejściowe nie mogą zostać przekonwertowane na liczbę całkowitą (wypisz "Input must be a number!")ZeroDivisionError, jeśli dane wejściowe wynoszą 0 (wypisz "Cannot divide by zero!")- Dowolny inny wyjątek za pomocą ogólnej obsługi (wypisz "An unexpected error occurred!")
Spróbuj swoich sił
def process_data(input_string):
try:
# Spróbuj przekonwertować ciąg wejściowy na liczbę całkowitą
# Oblicz wynik dzielenia 100 przez wartość wejściową
# Zwróć wynik
except ValueError:
# Obsłuż przypadek, gdy wartości wejściowej nie można przekonwertować na liczbę całkowitą
except ZeroDivisionError:
# Obsłuż przypadek, gdy wartość wejściowa wynosi zero
except:
# Obsłuż wszelkie inne nieoczekiwane wyjątki
return NoneTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Odkrywanie zmiennych
StałeWielokrotne przypisania zmiennychZamiana zmiennychZmienne zastępczeZaokrąglanie liczbKonwersja na listę4Aplikacja książki kontaktów
Wyświetl menuDodaj kontakt7Zbiory — część 2
Działania matematyczne — część 1Działania matematyczne — część 2Powtórka — poszukiwanie skarbówPodzbiory i nadzbioryIterowanie po zbiorachPowtórka — śledzenie turnieju10Podstawowe składanie list
SkładniaTworzenie prostych listDodawanie warunkówUżywanie agregacji danychPowtórka – dom listPowtórka – elementy wolności13System zarządzania zapasami
Przegląd projektuDodawanie produktu2Słowniki — część 1
Czym jest słownik?Tworzenie słownikaDostęp do wartościModyfikowanie słownikówPowtórzenie — menedżer przepisów5Zaawansowane podejmowanie decyzji
Operator warunkowySprawdzanie przynależnościSprawdzanie tożsamościBłędy wcięćPowtórka — filtr wakacyjny8Menedżer rekordów uczniów
Przegląd projektuDodawanie ucznia11Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Wyzwanie podsumowujące — sortowanie z lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Podsumowanie — suma elementów zagnieżdżonej listy14Funkcje wyższego rzędu
Funkcja mapFunkcja filterPodsumowanie – walidator adresów e-mailPodsumowanie – procesor liczb3Słowniki, część 2
Metody słownikówZagnieżdżone słownikiSprawdzanie kluczyIterowanie po słownikachPowtórzenie — licznik częstotliwości9Zaawansowana agregacja danych
Używanie sumyZnajdowanie minimum i maksimumEfektywne sortowanie danychPowtórka – sortowanie słowników12Podstawowa obsługa błędów
Czym jest obsługa błędów?Blok try i exceptObsługa wielu wyjątkówPodsumowanie – błędy w koszyku zakupowymPoćwicz samodzielnie: Kompilator Python online