Wyjątki. try - except

Podobne dokumenty
Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:

Programowanie obiektowe

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Pobieranie argumentów wiersza polecenia

Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków

Język Python (3) Język Python (3) 1/35

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Wyjątki (exceptions)

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

Delphi Laboratorium 3

Podstawy programowania. rozdział 8: WYJĄTKI. ostatnia modyfiaaja:

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Kurs rozszerzony języka Python

Język Python. Język Python 1/35

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Deklarowanie kursora

Podstawy programowania w Pythonie

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Zarządzanie sieciami telekomunikacyjnymi

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Informatyka 2015/16 wykład 9. Pliki Sterowanie przebiegiem programu cz. 2. Dr inż. Witold Nocoń (p. 230)

Programowanie Obiektowe Ćwiczenie 4

Procedury i funkcje składowane

11.1 Obsługa błędów i wyjątków Polecenia try, throw, catch CLI C++, klasa Exception... 9

rozdział 4: ZMIENNE I INSTRUKCJE

Środowisko programisty

Podstawy programowania w Pythonie

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Podstawy i języki programowania

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Zaawansowany kurs języka Python

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Programowanie telefonów z Windows Phone 7, cz. 4

Oracle PL/SQL. Paweł Rajba.

Visual Basic Debugging and Error Handling

Przegląd języka Python. Łukasz Anwajler

Obsługa wyjątków. Język C++ WW12

Wykład 8: Obsługa Wyjątków

Zarządzanie sieciami komputerowymi - wprowadzenie

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Klasy cd. Struktury Interfejsy Wyjątki

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Podstawy programowania w Pythonie

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Obsługa blędów i zewnętrznych plików

MS Visual Studio 2005 Team Suite - Performance Tool

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Programowanie obiektowe

Programowanie w języku Python. Grażyna Koba

Programowanie w Ruby

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wstęp do programowania

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Bloki anonimowe w PL/SQL

Wykład 2 Programowanie zorientowane obiektowo w Pythonie

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Podstawy. Jan Koprowski Politechnika Gdańska, FTiMS Informatyka Stosowana

Środowisko programisty

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

PL/SQL. Zaawansowane tematy PL/SQL

Technologie baz danych WYKŁAD 7: Wyjątki

Programowanie w języku C++

Język PL/SQL Procedury i funkcje składowane

Programowanie obiektowe

Warsztaty dla nauczycieli

Programowanie RAD Delphi

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Algorytmy i struktury danych

EPI: Interfejs Graficzny 2011/2012 Laboratorium nr 2 Programowanie obiektowe

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Język C++ wykład VIII

Wątki i komunikacja między nimi w języku Python

Konwencje obsługi błędów

Dawid Gierszewski Adam Hanasko

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Typy danych, cd. Łańcuchy znaków

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Aplikacje w środowisku Java

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Python. Wprowadzenie. Jolanta Bachan

OBSŁUGA WYJĄTKÓW. Mechanizm języka PL/SQL. Wyjątki:

Kurs rozszerzony języka Python

Transkrypt:

Wyjątki Wyjątek jest obiektem Pythona reprezentującym błąd. Innymi słowy, jest on zdarzeniem, które pojawia się podczas wykonania programu przerywając jego normalny przebieg. Wyobraźmy sobie dłuższy fragment kodu, który realizuje krok po kroku jakieś bardziej złożone zadanie. W momencie pojawienia się problemu na którymś etapie realizacji zadania dalsze jego wykonanie może się okazać niemożliwe. Najlepiej byłoby wtedy przerwać dany blok kodu. W takich sytuacjach Python automatycznie kończy działanie całego programu. Można temu jednak zapobiec odpowiednio przechwytując i obsługując pojawiające się wyjątki. Do obsługi wyjątków głównie korzysta się z instrukcji try, except, else, finally, raise. try - except Narażoną na błąd sekcję kodu należy objąć instrukcją try, która przechwyci wyjątek i pozwoli go obsłużyć. Po tej sekcji należy umieścić except, gdzie umieszczony będzie kod wykonywany w razie znalezienia błędu. Przy wykryciu błędu Python przeskoczy do sekcji except, wykona zawarte w nim instrukcje a następnie będzie działać dalej, nie wracając już jednak do sekcji try. Wszystkie instrukcje z sekcji try znajdujące się po wykrytym błędzie zostaną pominięte. plik = open (" testfile ", "w") plik. write (" Test obslugi bledow ") except IOError : print " Blad : nie mozna odnalezc pliku lub odczytac danych " else : print " Poprawnie dokonano zapisu do pliku " plik. close () 1

Można wykorzystać konstrukcję try - except nie podając przy sekcji except rodzju błędu jakiego się spodziewamy. Zadziała to w taki sposób, że kod będzie obsługiwał wszystkie rodzaje błędów. Nie jest to jednak uważane za dobrą praktykę programistyczną, ponieważ nie prowadzi do identyfikacji problemu, który się pojawia. try - finally W bloku finally umieszcza się instrukcje, które zostaną wykonane niezależnie od tego, czy w sekcji try zostanie wykryty błąd czy też nie, oraz nawet niezależnie od tego, czy wykonywanie kodu z bloku try zostanie przerwane przez break lub return. Komendę finally wykorzystuje się do wykonania koniecznych porządków. Z instrukcją finally nie można równocześnie stosować else. Instrukcja try musi posiadać co najmniej jeden blok except lub jeden blok finally, ale nigdy oba równocześnie. plik = open (" testfile ", "w") plik. write (" Test obslugi bledow ") finally : print " Zamykam plik " plik. close () except IOError : print " Blad : nie mozna odnalezc pliku lub odczytac danych " raise Raise służy do wymuszenia pojawienia się danego wyjątku. Jako pierwszy argument podana jest nazwa wyjątku, jako drugi (opcjonalnie) argument wyjątku. raise NameError, komunikat Argument wyjątku Argument wyjątku jest bardzo przydatny dla dokładnego określenia przyczyny powstania wyjątku. Zmienna podana jako argument powinna się pojawić przy poleceniu except po podaniu obsługiwanego typu błędu: except IOError, e: print e 2

except ValueError, Argument : print " The argument does not contain numbers \ n", Argument Zmienna ta przechowuje pojedyńczą wartość lub jej większą ilość w formie krotki.w krotce zwykle znajduje się string z nazwą błędu, jego numet i lokalizacja. 3

Wyjątki z biblioteki standardowej Nr Wyjątek Opis 1 Exception Base class for all exceptions 2 StopIteration Raised when the next() method of an iterator does not point to any object. 3 SystemExit Raised by the sys.exit() function. 4 StandardError Base class for all built-in exceptions except StopIteration and SystemExit. 5 ArithmeticError Base class for all errors that occur for numeric calculation. 6 OverflowError Raised when a calculation exceeds maximum limit for a numeric type. 7 FloatingPointError Raised when a floating point calculation fails. 8 ZeroDivisionError Raised when division or modulo by zero takes place for all numeric types. 9 AssertionError Raised in case of failure of the Assert statement. 10 AttributeError Raised in case of failure of attribute reference or assignment. 11 EOFError Raised when there is no input from either the raw_input() or input() function and the end of file is reached. 12 ImportError Raised when an import statement fails. 13 KeyboardInterrupt Raised when the user interrupts program execution, usually by pressing Ctrl+c. 14 LookupError Base class for all lookup errors. 15 IndexError Raised when an index is not found in a sequence. 16 KeyError Raised when the specified key is not found in the dictionary. 17 NameError Raised when an identifier is not found in the local or global namespace. 18 UnboundLocalError Raised when trying to access a local variable in a function or method but no value has been assigned to it. 19 EnvironmentError Base class for all exceptions that occur outside the Python environment. 20 IOError Raised when an input/ output operation fails, such as the print statement or the open() function when trying to open a file that does not exist. 21 OSError Raised for operating system-related errors. 22 SyntaxError Raised when there is an error in Python syntax. 23 IndentationError Raised when indentation is not specified properly. 24 SystemError Raised when the interpreter finds an internal problem, but when this error is encountered the Python interpreter does not exit. 25 SystemExit Raised when Python interpreter is quit by using the sys.exit() function. If not handled in the code, causes the interpreter to exit. 26 TypeError Raised when an operation or function is attempted that is invalid for the specified data type. 27 ValueError Raised when the built-in function for a data type has 4 the valid type of arguments, but the arguments have invalid values specified. 28 RuntimeError Raised when a generated error does not fall into any category. 29 NotImplementedError Raised when an abstract method that needs to be implemented in an inherited class is not actually implemented.

Definiowanie własnych wyjątków Istnieje możliwość zdefiniowania własnych typów wyjątków implementując klasy dziedziczące po wbudowanej klasie wyjątków. class Bad ( Exception ): # klasa Bad dziedziczaca po Exception ; wyjatek zdefi pass def doomed (): raise Bad () # zgloszenie instancji doomed () except Bad : print " przechwycenie Bad" 5

Źródła M. Lutz, Python - wprowadzenie, Helion, 2011 https://pl.python.org/docs/tut/node10.html https://www.tutorialspoint.com 6