Python - zaawansowana obsługa wyjątków

Spisie treści
Po zgłoszeniu wyjątku naszym obowiązkiem jest umieć sobie z nim poradzić, w ten sposób nasz program będzie mógł wykonać akcję, podnieść komunikat, zażądać korekty parametru wprowadzonego przez użytkownika, w skrócie wiele możliwości .
Łapanie wyjątków
Jak wspomnieliśmy wcześniej, ważne jest, aby kiedy widzimy wyjątek, móc go złapać w ten sposób, możemy zdecydować, co program powinien zrobić, gdy taka sytuacja wystąpi, w tym celu użyjemy poleceń spróbuj / z wyjątkiem. Aby zademonstrować powyższe, przeanalizujemy bardzo prosty program dzielenia, ponieważ wiemy, że nie możemy podzielić liczby przez 0, więc spowoduje to wyjątek.
Zacznijmy budować nasz kod, pamiętajmy, że możemy to zrobić w dowolnym edytorze tekstu i musimy zapisać plik z rozszerzeniem .py, aby móc go wykonać w naszej linii poleceń lub konsoli.
 x = input ('Wprowadź pierwszą liczbę:') y = input ('Wprowadź drugą liczbę:') print x / y [/ size] [size = 4]

Będzie to działać całkiem poprawnie, dopóki użytkownik nie wprowadzi wartości 0 jako drugiego argumentu, spowoduje to wyjątek, jak widać na poniższym obrazie uruchomienia tego programu:

Możemy temu zapobiec, używając spróbuj / z wyjątkiem który widzieliśmy na początku tej sekcji, zobaczmy nasz poprawiony kod:
 try: x = input ('Wpisz pierwszą liczbę:') y = input ('Wpisz drugą liczbę:') print x / y z wyjątkiem ZeroDivisionerror: print "Druga liczba nie może być zero!" 

Ten sposób załatwienia tej sprawy jest dość czysty, mimo wszystko można by też powiedzieć, że z prostym Jeśli warunkuje to, że wartość Tak Nie byłoby 0 byłoby odpowiednim rozwiązaniem, jednak gdybyśmy dodali więcej podziałów do naszego programu, potrzebowalibyśmy więcej warunkowych, zamiast tego potrzebujemy tylko jednego handlera możliwego wyjątku, który jest generowany.
Złap więcej niż jeden wyjątek
Kontynuując przykład podziału, nad którym pracowaliśmy, zobaczmy, co by się stało, gdybyśmy zamiast 0 wpisali coś innego:

Na obrazku widzimy, że wprowadzono tekst, a nasz program obsługi oczekiwał tylko wyjątku typu Błąd podziału zerowego nie mógł wykonać właściwej obsługi, ponieważ nie wiedział, co zrobić z nowo wygenerowanym wyjątkiem.
Aby złapać nowy wyjątek, po prostu dodamy nowy blok z wyjątkiem aby móc poradzić sobie z wyjątkiem Wpisz błąd który jest generowany przez podzielenie liczby przez tekst.
Zobaczmy nasz poprawiony kod:
 try: x = input ('Wpisz pierwszą liczbę:') y = input ('Wpisz drugą liczbę:') print x / y z wyjątkiem ZeroDivisionerror: print "Druga liczba nie może być zerem!" z wyjątkiem TypeError: print "To nie była liczba, prawda?" 

Gdybyśmy zdecydowali się na użycie warunkowych Jeśli, to zadanie zajęłoby nam znacznie więcej wierszy kodu, poza tym, że nasz program byłby mniej czytelny.
Łapanie dwóch wyjątków w tym samym bloku
Jeśli potrzebujemy złapać kilka wyjątków w jednym bloku z wyjątkiem co musimy zrobić, to dodać je w deklaracji w nawiasach, zobaczmy kod, aby lepiej to zrozumieć:
[/ size] try: x = input ('Wprowadź pierwszą liczbę:') y = input ('Wpisz drugą liczbę:') print x / y z wyjątkiem ZeroDivisionerror: print "Druga liczba nie może być zerem!" z wyjątkiem TypeError: [/ size] [size = 4] print "To nie była liczba, prawda?" 

Jak widzieliśmy, cokolwiek się stanie, aplikacja będzie nadal wysyłać nam tę samą wiadomość, niezależnie od tego, czy zostanie wprowadzone 0, czy coś innego niż liczba.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave