Błąd asercji Pythona

Blad Asercji Pythona



Gdy program w Pythonie napotka nieoczekiwany warunek podczas działania, zatrzymuje wykonywanie i zwraca wyjątek. W Pythonie wyjątki i błędy składniowe to dwie główne kategorie błędów. Gdy fragment kodu Pythona, który jest poprawny pod względem składniowym, tworzy błąd, jest to znane jako zgłoszenie wyjątku/błędu. Komunikat o błędzie w ostatnim wierszu określa dokładny typ wyjątku i zawiera opis ułatwiający debugowanie, a strzałka wskazuje wiersz lub lokalizację, w której wystąpił wyjątek. Wyłapywanie wyjątków i zarządzanie nimi ma kluczowe znaczenie dla uniknięcia nagłej awarii programu. Użyj innego sposobu wykonania kodu. Na przykład, gdy wystąpi określony wyjątek. W tym samouczku omówimy AssertionError i sposób jego rozwiązania w Pythonie.

Co to jest AssertionError w Pythonie?

Błędy asercji to koncepcja programowania, która występuje, gdy programista pisze lub tworzy blok kodu używany do deklarowania kryterium lub warunku, który ma zostać spełniony przed uruchomieniem modułu. Podobnie jak w przypadku każdego błędu Pythona, kontrola jest przekazywana do kolejnego wiersza kodu, jeśli warunek określony podczas twierdzenia został zadeklarowany jako prawdziwy. Z drugiej strony, jeśli jest fałszywy, zgłaszany jest błąd lub wyjątek i program zostaje zatrzymany. Instrukcja Assert może być używana w różnych językach programowania z ich specyficzną składnią, ponieważ jest niezależna od języka. Jest to podklasa lub instancja klasy Exception. Python AssertionError ma następującą składnię:

Składnia: warunek potwierdzenia, komunikat_o_błędzie (opcjonalnie)







Przykład

Jako dane wejściowe wprowadzimy wiek osoby, a jeśli będzie on mniejszy od zera, konsola zgłosi błąd asercji.





A co, jeśli wprowadzimy wiek mniejszy niż 0?





Debugowanie kodu przy użyciu tej metody jest prostsze, co ułatwia znajdowanie błędów i poprawianie błędów w programie.



Jak działa AssertionError w Pythonie

Język Python zawiera instrukcję asercji, której można użyć do wygenerowania prostych komunikatów o błędach z logicznymi asercjami. Gdy instrukcja asercji nie powiedzie się, zostanie zgłoszony „wyjątek” AssertionError. W Pythonie klasy wyjątków wywodzą się z klasy BaseException. Klasa BaseException, która jest również klasą bazową klasy AssertionError, jest miejscem, z którego pochodzi klasa Exception. Zawsze powinien istnieć odpowiedni kod obsługi wyjątków, aby poradzić sobie z niepowodzeniem instrukcji Assertej, gdy jest ona używana. Domyślny program obsługi wyjątków w Pythonie wyświetli komunikat o błędzie napisany przez programistę, ale błąd można również obsłużyć lub rozwiązać bez komunikatu o błędzie.

Implementacja AssertionError w Pythonie

Oto kilka przykładów AssertionError w Pythonie:

Przykład

W tym przykładzie napiszemy program w Pythonie wyświetlający błąd AssertionError w programie, który znajduje pole koła.

Wartość promienia „r” jest przekazywana jako dane wejściowe do funkcji w poprzednim programie, który został utworzony w celu znalezienia obszaru okręgu. Instrukcja ASS jest następnie używana do określenia, czy podana wartość lub promień „r” jest poniżej zera, a jeśli zostanie do niej podana wartość ujemna, zostanie zgłoszony wyjątek. Pole okręgu zostanie zwrócone na podstawie wartości promienia „r” podanego do funkcji. Najpierw funkcja jest wykonywana z wartością r jako 3. Następnie funkcja jest wykonywana z wartością 2,5. AssertionError jest wywoływany, gdy używamy ujemnej wartości „r”, tj. „-1”.

Wypróbujmy inny przykład, aby wyświetlić wystąpienie błędu asercji.

Przykład

W tym przykładzie program określi, czy wartość mianownika jest niezerowa.

Komunikat o błędzie asercji jest wyświetlany w poprzednim programie. Stworzyliśmy dwie zmienne (a i b), a wartości całkowite określają zmienne. Druga zmienna, tj. b, jest następnie testowana, aby sprawdzić, czy nie jest równa 0 przy użyciu instrukcji attach. W innym przypadku zostanie wydrukowany komunikat o błędzie. Jeśli nie, wyświetlany jest wynik dzielenia pierwszej liczby przez drugą wartość. Na poprzednim obrazku wyświetlane są dane wyjściowe programu.

Zastosowania AssertionError

Inne korzystne zastosowania błędu asercji obejmują:

  • Asercja pomaga w ocenie wartości parametrów
  • Asercje pomagają w monitorowaniu typu danych wejściowych i tego, czy ta wartość jest prawidłowa
  • Dodatkowo asercje pomagają w określeniu, czy inny twórca kodu niewłaściwie używa interfejsu
  • Asercje pomagają w ciągłym monitorowaniu wyników programu

Jak możemy uniknąć błędów asercji w Pythonie?

  1. Flaga -O w programie Pythona może być użyta do wyłączenia każdej instrukcji asercji. Należy pamiętać, że oświadczenia, które pojawiają się po oświadczeniu o stwierdzeniu, nie zostaną wykonane, jeśli wyłączymy oświadczenia o stwierdzeniu.
  2. Zmienna środowiskowa może również ustawić flagę, aby wyłączyć instrukcje asercji. W tej sytuacji ma to wpływ na wszystkie procesy i aplikacje, które używają lub dziedziczą środowisko.
  3. W Pythonie najprostszym sposobem zapobiegania błędom asercji jest ich ręczna obsługa. Jeśli upewnimy się, że przepływ sterowania programu jest tak przekierowywany, że nie ma dostępu do instrukcji asercji, nie ma szans na błędy asercji.

Obsługa błędu asercji

Oprócz instrukcji asercji, możemy również obsłużyć błąd asercji za pomocą następujących metod:

Obsługa błędu asercji za pomocą bloków Try-Except

Instrukcja Assert określa, czy wartości są równe. Blok try zgłasza błąd AssertionError, ponieważ te liczby całkowite nie są równe. Polecenie drukowania jest wykonywane po przechwyceniu wyjątku przez blok z wyjątkiem. Tutaj wyświetlane są dane wyjściowe instrukcji print z bloku wyjątków. Słowa kluczowego raise można użyć do ponownego zgłoszenia błędu w bloku wyjątku, dzięki czemu możemy określić źródło wyjątku. Gdy wystąpi wyjątek, słowo kluczowe „podnieś” zgłosi błąd i zakończy program. Pomaga w utrzymaniu lub prowadzeniu rejestru/śledzenia istniejącego wyjątku.

Obsługa błędu asercji za pomocą modułu śledzenia

Gdy kod zawiera kilka instrukcji asercji, moduł śledzenia pomaga w zidentyfikowaniu dokładnego źródła błędu.

Używając modułu traceback, nasza instrukcja print może być napisana z symbolami zastępczymi {}.

Dodatkowo możemy zdefiniować inne zmienne do przechowywania pozycji linii, nazwy pliku, nazwy metody, a także tekstu/wiadomości, w której wystąpił wyjątek.

Obiekt śledzenia jest określany jako „tb”. Używamy dwóch symboli zastępczych: jednego dla tekstu i drugiego dla pozycji wiersza w instrukcji print.

Funkcja sys.exc_info() zwraca trzy składniki instrukcji „raise” — exc_type, exc_traceback i exc_value.

Postępowanie z błędem asercji za pomocą instrukcji wydruku

Aby ręcznie obsłużyć wyjątek, możemy użyć instrukcji „drukuj” wewnątrz bloku wyjątków.

Instrukcja print drukuje wszelkie komunikaty o błędach wprowadzone przez użytkownika. Dzięki tej metodzie błąd techniczny nie będzie problemem dla użytkownika.

Zamiast błędu wyświetlany jest krótki komunikat.

Wniosek

W tym poście po raz pierwszy zobaczyliśmy wprowadzenie wyjątków w Pythonie. Omówiliśmy AssertionError, jak to działa i jak możemy zaimplementować AssertionError w Pythonie. Wyjaśniliśmy kilka zalet AssertionError i jak możemy ich uniknąć. W ostatniej sekcji tego posta zobaczyliśmy, jak możemy obsłużyć AssertionError w Pythonie za pomocą bloków Try-Except, modułu traceback i instrukcji print.