Spis treści:

Naucz się Pythona za darmo: stwórz bota Telegramu, Web parser i strona internetowa od podstaw pod okiem eksperta Sber
Dowiedz się więcejCo się stanie, jeśli w kodzie Pythona wystąpi błąd? W jaki sposób program powiadomi programistę o problemach i jak utworzyć własną procedurę obsługi? Wyjątki odpowiadają na wszystkie te pytania. Wyjaśnimy, jak działają i jak można je wykorzystać w kodzie.
Spis treści
- Wyjątki w Pythonie to mechanizm obsługi błędów i nieoczekiwanych sytuacji, które pojawiają się podczas wykonywania programu. Gdy wystąpi błąd, zgłasza on wyjątek, który można przechwycić i obsłużyć za pomocą specjalnych konstrukcji.
Głównymi narzędziami do pracy z wyjątkami są bloki `try` i `except`. Kod, który może spowodować błąd, umieszczany jest w bloku `try`. Jeśli w tym bloku wystąpi wyjątek, wykonywanie programu przechodzi do odpowiedniego bloku `except`, w którym można określić, jak dokładnie zareagować na ten błąd.
Istnieje wiele predefiniowanych typów wyjątków, takich jak `ValueError`, `TypeError` i inne, które pozwalają programistom precyzyjniej zdefiniować, jakie błędy chcą obsłużyć. Python umożliwia również tworzenie własnych wyjątków poprzez rozszerzanie klas bazowych.
Należy pamiętać, że po obsłużeniu wyjątku wykonywanie programu może być kontynuowane, jeśli logika obsługi to przewiduje. Ponadto Python posiada blok `finally`, który jest wykonywany niezależnie od tego, czy wystąpił wyjątek. Jest to przydatne do wykonywania ostatecznych działań, takich jak zamykanie plików lub zwalnianie zasobów.
Wyjątki w Pythonie zapewniają zatem bardziej solidne i ustrukturyzowane podejście do obsługi błędów, co sprawia, że kod jest bardziej solidny i zrozumiały.
- Wyjątki w Pythonie są obsługiwane za pomocą różnych konstrukcji, takich jak try, except, Finally, else i raise.
Blok try służy do umieszczania kodu, który może spowodować błąd. Jeśli podczas wykonywania tego kodu wystąpi wyjątek, sterowanie jest przekazywane do odpowiedniego bloku except, który jest przeznaczony do obsługi określonego typu błędu. Można również określić wiele bloków except do obsługi różnych typów wyjątków.
Co więcej, blok Finally jest wykonywany niezależnie od tego, czy wystąpił wyjątek. Jest to przydatne do wykonywania czynności czyszczących, takich jak zamykanie plików czy zwalnianie zasobów.
Blok else, który może być używany po poleceniu try i przed poleceniem Finally, jest wykonywany, jeśli kod w bloku try zakończy się bez błędów. Jest to przydatne do wykonywania czynności, które powinny być wykonywane tylko wtedy, gdy nie wystąpiły żadne wyjątki.
Polecenie raise umożliwia ręczne zgłoszenie wyjątku. Może to być przydatne w sytuacjach, gdy trzeba zgłosić problem, który wystąpił w programie lub gdy trzeba zgłosić wyjątek na podstawie warunków środowiska wykonawczego.
W ten sposób te konstrukcje zapewniają elastyczny i wydajny system obsługi błędów w Pythonie, umożliwiając programistom zarządzanie wyjątkami i zapobieganie nieoczekiwanym awariom programu.
- Obsługa wielu wyjątków
- Ignorowanie błędów w Pythonie można osiągnąć na kilka sposobów, w zależności od sytuacji i wymaganego działania. Jedną z najczęstszych metod jest użycie konstrukcji try i except. W tym przypadku kod, który może spowodować błąd, umieszcza się w bloku try, a ewentualny wyjątek obsługuje się w bloku except. Na przykład:
«`python
try:
# Kod, który może zgłosić błąd
except SomeError:
# Działania podejmowane w przypadku wystąpienia błędu
«`Jeśli chcesz całkowicie ignorować błędy, możesz użyć ogólnego `except`, który przechwytuje wszystkie wyjątki:
«`python
try:
# Kod, który może zgłosić błąd
except:
pass # Ignoruj wszystkie błędy
«`Warto jednak pamiętać, że takie podejście może ukrywać ważne problemy w kodzie. Dlatego najlepiej jest określić konkretne typy błędów, które zamierzasz ignorować.
Czasami przydatne jest użycie konstrukcji `with` do zarządzania zasobami, ale w tym przypadku kod wewnątrz bloku `with` może również zgłaszać błędy. Możesz dodać obsługę wyjątków w tym bloku:
«`python
with open(‘file.txt’) as f:
try:
# Kod, który może zgłosić błąd
except SomeError:
pass # Zignoruj błąd
«`Dlatego ignorowanie błędów w Pythonie jest ważnym aspektem pracy z wyjątkami, wymagającym ostrożności i zrozumienia, które błędy chcesz zignorować, aby uniknąć przeoczenia krytycznych problemów w swoim kodzie.
- Tworzenie niestandardowych wyjątków
Jak działają wyjątki w Pythonie
Wyjątki w Pythonie to sposób zarządzania błędami, które mogą wystąpić podczas wykonywania programu. Ten mechanizm pozwala programowi kontynuować działanie nawet po wykryciu błędu, zamiast nieoczekiwanie zakończyć działanie. Python zawiera szereg predefiniowanych wyjątków, które skutecznie radzą sobie z najczęstszymi błędami.
Przeanalizujmy sytuację na konkretnym przykładzie. W przedstawionym kodzie wywoływana jest funkcja f1(), która zawiera funkcję f2(). Proces będzie kontynuowany, aż interpreter dojdzie do wiersza print(y — 2):
Ponieważ odejmowanie liczby od ciągu znaków nie jest możliwe, na konsoli zostanie wyświetlony komunikat o błędzie zawierający Traceback wskazujący na wyjątek TypeError.
Język programowania Python udostępnia standardowe wyjątki obejmujące różne scenariusze. Przyjrzyjmy się bliżej kilku z nich:
- TypeError to błąd występujący, gdy operacja lub funkcja próbuje użyć obiektu, który nie pasuje do oczekiwanego typu.
- ValueError to błąd występujący, gdy operacja lub funkcja otrzymuje argument, który nie pasuje do oczekiwanego typu. Na przykład ten wyjątek może wystąpić, gdy próbujesz przekonwertować ciąg na liczbę.
- Występuje błąd IndexError, gdy próbujesz uzyskać dostęp do elementu o nieistniejącym indeksie.
- Występuje błąd ZeroDivisionError, gdy próbujesz podzielić liczbę przez zero.

Czytaj również:
Python oferuje kilka operatorów dzielenia, z których każdy ma swoje własne funkcje i zastosowanie. Podstawowym operatorem dzielenia jest symbol «/», który wykonuje zwykłe dzielenie i zwraca wynik jako liczbę zmiennoprzecinkową. Na przykład, jeśli podzielisz 5 przez 2, wynikiem będzie 2,5.
Jeśli potrzebujesz uzyskać wynik całkowity, użyj operatora «//». Operator ten wykonuje dzielenie z zaokrągleniem w dół, czyli zwraca tylko część całkowitą wyniku. Na przykład, 5 // 2 zwróci 2.
Ważne jest również rozważenie operatora «%», który pozwala uzyskać resztę z dzielenia. Operator ten jest często używany w sytuacjach, gdy konieczne jest ustalenie, czy jedną liczbę można podzielić przez inną bez reszty.
Python posiada również operator «**», który służy do podnoszenia do potęgi. Na przykład wyrażenie 2 ** 3 da wynik 8, ponieważ 2 jest podnoszone do trzeciej potęgi.
W związku z tym, w zależności od potrzeb, można wybrać odpowiedni operator dzielenia w Pythonie, czy to dzielenie zwykłe, dzielenie całkowite, reszta, czy podnoszenie do potęgi.
- FileNotFoundError to błąd w Pythonie, który występuje, gdy program nie może znaleźć pliku, który próbujemy otworzyć.
Oto niektóre z najczęstszych wbudowanych wyjątków w języku Python. Pełną listę można znaleźć w oficjalnej dokumentacji.
Wyjątki w Pythonie: kluczowe konstrukcje do ich obsługi
Python oferuje pełen arsenał narzędzi do tworzenia niestandardowych mechanizmów obsługi wyjątków. Jest to szczególnie istotne, gdy zachodzi potrzeba zaimplementowania niestandardowego zachowania, którego twórcy języka nie wzięli pod uwagę. Do implementacji takich rozwiązań używane są konstrukcje try, except, Finally, else i raise.
- Python używa konstrukcji try do wychwytywania wyjątków. Jeśli w bloku try wystąpi błąd, sterowanie zostanie przekazane do pierwszego bloku except.

Przeczytaj również:
Operatory odgrywają ważną rolę w języku programowania Python, ponieważ umożliwiają wykonywanie różnych operacji na danych. Te elementy stanowią podstawę tworzenia wyrażeń i wykonywania obliczeń. W Pythonie istnieje kilka typów operatorów, z których każdy ma swoje własne przeznaczenie.
Po pierwsze, istnieją operatory arytmetyczne, takie jak dodawanie, odejmowanie, mnożenie i dzielenie, które umożliwiają wykonywanie operacji matematycznych. Umożliwiają one wykonywanie obliczeń na wartościach liczbowych i uzyskiwanie wyników.
Po drugie, istnieją operatory porównania, które służą do porównywania dwóch wartości. Można ich używać do określania, czy jedna wartość jest równa, większa lub mniejsza od innej, co jest bardzo przydatne podczas pisania warunków w kodzie.
Trzecim typem są operatory logiczne, takie jak «i», «lub» i «nie». Służą one do łączenia wyrażeń logicznych i pomagają w podejmowaniu decyzji w zależności od prawdziwości określonych warunków.
Dodatkowo istnieją operatory przypisania, które umożliwiają zmianę wartości zmiennych. Na przykład operator «=» służy do przypisywania wartości zmiennej, a operatory takie jak «+=» lub «-=» pomagają uprościć notację operacji.
Warto również wspomnieć o operatorze przesunięcia bitowego, który umożliwia manipulowanie binarną reprezentacją liczb, a także o operatorach przynależności i tożsamości, które pomagają sprawdzić, czy dany element znajduje się w kolekcji lub czy dwie zmienne odnoszą się do tego samego obiektu.
Zatem operatory w Pythonie są niezbędnymi narzędziami do wykonywania różnych operacji, upraszczając proces programowania i umożliwiając programistom tworzenie bardziej wydajnych i czytelnych rozwiązań.
- Sekcja except zawiera kod, który zostanie uruchomiony, jeśli w bloku try wystąpi błąd.
- Blok Finally zawiera kod, który zostanie wykonany w każdym przypadku, niezależnie od obecności błędów. Najczęściej ten blok jest używany do operacji na plikach, aby upewnić się, że dokument zostanie zamknięty.
- Blok else jest wykonywany, jeśli w bloku try nie wystąpił żaden wyjątk.
- Podczas obsługi błędów słowo kluczowe as służy do przypisania wyjątku do określonej zmiennej. Przyjrzyjmy się przykładowi: utwórzmy własny wyjątek dla sytuacji dzielenia przez zero. Nazwiemy ten błąd ZeroDivisionError i przypiszemy go do zmiennej e. Będziemy mogli uzyskać dostęp do tej zmiennej, aby wyświetlić nazwę błędu na ekranie.
- W Pythonie polecenie raise służy do jawnego zgłoszenia wyjątku. Może to być przydatne w sytuacjach, gdy wystąpi warunek wymagający zakończenia programu lub zgłoszenia błędu.
Obsługa wielu typów wyjątków
Bloki except umożliwiają obsługę różnych wyjątków na różne sposoby. Każdy taki blok jest powiązany z określonym typem błędu.
Na przykład, jeśli w sekcji try wystąpi błąd typu TypeError, zostanie przetworzony pierwszy blok except. To samo stanie się z wyjątkiem ZeroDivisionError.
W niektórych sytuacjach konieczna jest jednolita obsługa różnych typów wyjątków. W takich przypadkach możliwe jest wylistowanie wszystkich tych wyjątków w jednym bloku except, rozdzielając je przecinkami:
Blok except, który nie określa określonego typu wyjątku, przechwyci wszystkie wyjątki, które nie zostały wcześniej obsłużone w blokach other except. Dotyczy to sytuacji takich jak zakończenie programu za pomocą klawiatury, wyjście z systemu i inne okoliczności.
Ta forma konstrukcji jest prawie nigdy nieużywana w praktyce. Programiści często preferują notację except Exception. To podejście pozwala najpierw obsłużyć określone wyjątki, a następnie wszystkie pozostałe przypadki.
W pierwszym bloku except obsłużymy wyjątek typu TypeError, wyświetlając na konsoli komunikat: «Wykryto TypeError». Kolejny blok except ma na celu wychwycenie wszystkich pozostałych wyjątków i wyświetlenie komunikatu: «Wystąpił błąd».
Zaleca się rozpoczęcie obsługi błędów od bardziej szczegółowych klas wyjątków, takich jak TypeError. Jeśli zaczniesz od klasy bardziej ogólnej, takiej jak Exception, zadziała tylko pierwszy blok except, ignorując resztę.
Metody ignorowania błędów w Pythonie
Wyobraź sobie, że napisałeś kod, uruchomiłeś go, a w konsoli pojawiają się błędy, które na pewno są funkcjami, a nie błędami. W takim przypadku konieczne jest przekazanie interpreterowi swojego punktu widzenia. Aby rozwiązać takie sytuacje, Python udostępnia mechanizm ignorowania błędów.

Przeczytaj także:
W programowaniu terminy „błędy”, „ostrzeżenia” Terminy „wyjątki” i „błędy” odnoszą się do różnych aspektów błędów i ostrzeżeń, które mogą Powstają podczas tworzenia oprogramowania.
Błędy to wady kodu, które powodują nieprawidłowe działanie programu. Mogą to być zarówno błędy logiczne, jak i problemy składniowe, które uniemożliwiają programowi prawidłowe działanie. Błędy mogą objawiać się awariami, zawieszaniem się programu lub generowaniem nieprawidłowych wyników, co czyni je kluczowym problemem dla programistów dbających o jakość i niezawodność swoich produktów.
Ostrzeżenia często pojawiają się podczas kompilacji lub wykonywania programu i wskazują na potencjalne problemy, które nie są krytyczne, ale mogą negatywnie wpłynąć na działanie aplikacji. Mogą sygnalizować nieskuteczne praktyki, wycofane funkcje lub inne niuanse wymagające uwagi programisty, mimo że program może nadal działać.
Wyjątki to specjalna klasa błędów występujących podczas wykonywania programu. Sygnalizują one nieoczekiwane sytuacje, takie jak dzielenie przez zero, brakujące pliki lub błędy wejścia/wyjścia. Wyjątki pozwalają programistom na bardziej elastyczne radzenie sobie z błędami, zapewniając kontrolę nad przebiegiem wykonywania programu i wyświetlając użytkownikowi jasne komunikaty o błędach. Zrozumienie różnic między błędami, ostrzeżeniami i wyjątkami jest zatem ważne dla programistów, ponieważ pomaga poprawić jakość kodu i zapewnić stabilniejsze działanie oprogramowania. Python używa konstrukcji try/except do ignorowania wyjątków. W takim przypadku blok można pozostawić pusty lub dodać do niego instrukcję pass, która nie działa. W Pythonie próba dzielenia przez zero jest operacją niedozwoloną, ale istnieje sposób na obejście tego ograniczenia za pomocą obsługi błędów. Spróbujmy podzielić jeden przez każdą liczbę na podanej liście. Należy pamiętać, że wśród elementów listy znajduje się zero, co spowoduje wystąpienie wyjątku ZeroDivisionError w czasie wykonywania.

Przeczytaj również:
Listy w Pythonie to struktury danych, które umożliwiają przechowywanie sekwencji elementów. Są bardzo wygodne w użyciu, ponieważ mogą zawierać obiekty różnych typów, w tym liczby, ciągi znaków, a nawet inne listy. Dzięki swojej elastyczności i łatwości użycia listy stały się jedną z najpopularniejszych kolekcji w języku programowania Python.
Praca z listami rozpoczyna się od ich utworzenia. W tym celu można użyć nawiasów kwadratowych, które zawierają elementy oddzielone przecinkami. Na przykład listę liczb można zadeklarować w następujący sposób: numbers = [1, 2, 3, 4]. Listy mogą być również puste, co pozwala na dodawanie elementów w razie potrzeby.
Jednym z kluczowych aspektów pracy z listami jest dostęp do ich elementów. Dostęp do każdego elementu można uzyskać, określając jego indeks, który zaczyna się od zera. Zatem, aby uzyskać dostęp do pierwszego elementu listy, należy użyć numbers[0]. Dodatkowo istnieją indeksy ujemne, które umożliwiają dostęp do elementów od końca listy, zaczynając od -1.
Listy w Pythonie obsługują różnorodne operacje. Można dodawać elementy za pomocą metody append(), usuwać je za pomocą remove() lub pop() i modyfikować wartości według indeksu. Należy pamiętać, że listy są zmiennymi strukturami danych, co oznacza, że ich zawartość można zmienić po ich utworzeniu.
Warto również zauważyć, że Python oferuje wiele sposobów pracy z listami. Na przykład, można użyć pętli for do iterowania po wszystkich elementach listy, a funkcja len() pozwala znaleźć liczbę elementów na liście. Dodatkowo istnieje wiele wbudowanych funkcji i metod, które pomagają manipulować listami, dzięki czemu praca z nimi jest jeszcze wygodniejsza.
Ogólnie rzecz biorąc, listy to potężne narzędzie, które daje programistom ogromne możliwości organizowania i przetwarzania danych w Pythonie.
Możemy obsłużyć ten błąd, używając bloku except. W tym celu użyjemy operatora pass, który pozwoli Pythonowi zignorować występujący błąd.
W rezultacie otrzymujemy następujący wynik:
Należy pamiętać, że ignorowanie błędów nie jest właściwym podejściem. Takie podejście może prowadzić do niezauważenia ukrytych błędów w kodzie, co komplikuje debugowanie i utrudnia późniejsze utrzymanie programu.
Prawidłowe podejście do obsługi błędów polega nie tylko na naprawianiu problemów, ale także na dostarczaniu informacyjnych komunikatów o błędach lub skutecznej obsłudze określonych wyjątków.
Tworzenie niestandardowych klas wyjątków
Czasami konieczne jest stworzenie niestandardowej procedury obsługi błędów z wykorzystaniem wyjątków. Pomaga to poprawić bezpieczeństwo kodu i łatwość jego utrzymania. Aby utworzyć własny wyjątek, wystarczy utworzyć nową klasę dziedziczącą po klasie Exception lub dowolnym innym standardowym wyjątku.

Przeczytaj także:
Krótki przewodnik po programowaniu obiektowym w Pythonie: Sposoby na wyeliminowanie zamieszania w kod.
W podanym przykładzie ValidationError to wyjątek, który zasadniczo nie robi nic dodatkowego, poza tym, że dziedziczy właściwości standardowego Exception.
Kontynuujmy kod:
W podanym przykładzie funkcja person_age używa utworzonego przez nas wyjątku ValidationError, aby sprawdzić, czy wprowadzony wiek jest poprawny. Jeśli funkcja zostanie wywołana z nieprawidłowymi danymi, zgłaszany jest wyjątek ValidationError, który można przechwycić i obsłużyć.
Podsumowanie
Wyjątki w Pythonie odgrywają kluczową rolę w tworzeniu niezawodnego i solidnego kodu. Umożliwiają one zarządzanie błędami pojawiającymi się podczas wykonywania programu, co pomaga zapewnić jego nieprzerwane działanie nawet w nieprzewidzianych okolicznościach. Należy jednak pamiętać, że nie wszystkie błędy można obsłużyć lub wymagają tego rozwiązania – czasami skuteczniej jest pozwolić programowi zakończyć działanie z błędem, aby szybko zidentyfikować problem i wprowadzić niezbędne poprawki.
Przeczytaj również:
- Naucz się Pythona samodzielnie za darmo: Przewodnik krok po kroku
1. Określ swoje cele: Zanim zaczniesz, zastanów się, co dokładnie chcesz osiągnąć dzięki Pythonowi. Może to być tworzenie aplikacji internetowych, analiza danych lub automatyzacja rutynowych zadań.
2. Naucz się podstaw: Zacznij od nauki podstawowych pojęć, takich jak składnia, zmienne, typy danych i operatory. Istnieje wiele darmowych kursów online i samouczków wideo, które Ci w tym pomogą.
3. Ćwicz na prostych problemach: Rozwiązuj małe problemy i praktyczne przykłady, aby utrwalić swoje umiejętności. Platformy takie jak LeetCode czy HackerRank oferują różnorodne wyzwania praktyczne.
4. Poznaj biblioteki: Python oferuje bogaty zestaw bibliotek, które mogą znacznie ułatwić Ci pracę. Sprawdź biblioteki takie jak NumPy, Pandas i Matplotlib, jeśli interesuje Cię analiza danych, lub Flask i Django, jeśli interesuje Cię tworzenie stron internetowych.
5. Dołącz do społeczności: Bierz udział w forach takich jak Stack Overflow, Reddit lub specjalistycznych grupach w mediach społecznościowych. Dzielenie się doświadczeniami z innymi pomoże Ci szybciej zrozumieć złożone problemy.
6. Pracuj nad projektami: Twórz własne projekty lub bierz udział w projektach otwartych. Może to być strona internetowa, gra lub narzędzie. Praktyczne zastosowanie wiedzy to najlepszy sposób na jej utrwalenie.
7. Przejrzyj dokumentację: Nie zapomnij o dokumentacji Pythona i bibliotek, którą warto przeczytać, aby lepiej zrozumieć funkcjonalność i możliwości.
8. Nie poprzestawaj na tym: kontynuuj naukę bardziej złożonych tematów i technologii, zagłębiając się w obszary, które Cię interesują. Ciągłe doskonalenie jest kluczem do sukcesu w programowaniu.
- Guido van Rossum to znany programista, który został twórcą języka programowania Python. Zaczął rozwijać ten język pod koniec lat 80. XX wieku i wydał jego pierwszą wersję w 1991 roku. Van Rossum dążył do stworzenia prostego i intuicyjnego języka, który pozwoliłby programistom skupić się na rozwiązywaniu problemów, a nie na złożoności składni. Przez wiele lat nosił tytuł „dobrego króla” Pythona, co wskazuje na jego rolę w zarządzaniu projektem i kierowaniu jego rozwojem. W 2018 roku Guido ogłosił zamiar wycofania się z aktywnego udziału w projekcie, aby umożliwić społeczności swobodniejszy rozwój języka. Jego wkład w programowanie i wpływ na społeczność programistów są nie do przecenienia.
- Tworzenie aplikacji desktopowej w Pythonie z wykorzystaniem Tkintera.
