Najlepszy samouczek obsługa wyjątków Python W 2024 r. W tym samouczku możesz dowiedzieć się Standardowe python wyjątki,Co to jest nienormalne?,Obsługa wyjątków,Wyjątkiem bez użycia typ wyjątku z,Można używać bez typu wyjątku z wyjątkiem poniższych przykładach: try: 正常的操作 ...................... except: 发生异常,执行这块代码 ...................... else: 如果没有异常执行这块代码 Przede sposób try-except do połowu wszystkie wyjątki, które występują. Ale to nie jest dobry sposób, za pośrednictwem tego programu nie możemy zidentyfikować konkretne informacje o wyjątku. Bo to rejestruje wszystkie wyjątki.,I przy użyciu wielu typów poza wyjątkami,try-finally,Nieprawidłowe parametry,Wyjątki definiowane przez użytkownika,
Python udostępnia dwie bardzo ważne funkcje do obsługi wyjątków i błędów programu Pythona, który pojawia się w pracy. Można użyć tej funkcji do programów python debugowania.
Nazwa wyjątku | opis |
---|---|
BaseException | Klasa bazowa wszystkich wyjątków |
SystemExit | Tłumaczka wniosek, aby wyjść |
KeyboardInterrupt | Użytkownik Przerwać Realizująca (zwykle wprowadzić ^ C) |
wyjątek | Błąd ogólny klasy bazowej |
StopIteration | Iterator nie więcej wartości |
GeneratorExit | Generator (generator) powiadomić nieprawidłowe wyjście |
StandardError | Wszystkie wbudowany w standardzie klasy bazowej dla wyjątków |
ArithmeticError | Wszystko liczbowa klasa bazowa błędów |
FloatingPointError | błąd w obliczeniach zmiennoprzecinkowych |
OverflowError | operacje numeryczne przekroczony maksymalny limit |
ZeroDivisionError | Oprócz (lub modułu) zero (wszystkie typy danych) |
AssertionError | awaria twierdzenie |
AttributeError | Ten obiekt ma własność |
EOFError | Brak wbudowanego wejścia i przybywający znacznik EOF |
EnvironmentError | Operating system error klasy bazowej |
IOError | operacje wejścia / wyjścia na niepowodzenie |
OSError | błąd systemu operacyjnego |
WindowsError | wywołanie systemowe nie powiodło się |
ImportError | Moduł importu / przedmiot zawiodły |
LookupError | Nieprawidłowy klasy zapytań bazy danych |
IndexError | Bez tego wskaźnika sekwencji (indeks) |
KeyError | Bez tego klucza mapowania |
MemoryError | Błąd przepełnienia pamięci (przez interpreter Pythona nie jest śmiertelne) |
NameError | Nierejestrowana / zainicjować obiektu (bez nieruchomości) |
UnboundLocalError | Dostęp do zmiennej lokalnej niezainicjowany |
ReferenceError | Słabe obiekty referencyjne (słaby odniesienia) zostały próby uzyskania dostępu do zbierania śmieci z |
RuntimeError | Ogólne Runtime error |
NotImplementedError | Metoda ta nie została wdrożona |
SyntaxError | Błąd składni Pythona |
IndentationError | tiret błędu |
TabError | Tab i przestrzeń mix |
SystemError | Błąd systemu Zazwyczaj interpreter |
TypeError | Nieprawidłowy typ operacji |
ValueError | Nieprawidłowe argumenty przekazywane w |
UnicodeError | Błędy związane z Unicode |
UnicodeDecodeError | Dekodowanie Unicode błędu |
UnicodeEncodeError | Błąd kodu Unicode |
UnicodeTranslateError | Błąd konwersji Unicode |
ostrzeżenie | Ostrzeżenie klasy bazowej |
DeprecationWarning | Ostrzeżenia o nieaktualnych funkcji |
FutureWarning | Ostrzeżenia dotyczące przyszłej struktury semantyki zmieniło |
OverflowWarning | Stary ostrzeżenie o automatycznie awansowany na długi Integer (długie) z |
PendingDeprecationWarning | Będzie to ostrzeżenie o charakterystyce odpadów |
RuntimeWarning | Podejrzane zachowanie środowiska wykonawczego (Runtime zachowanie) ostrzegawczy |
SyntaxWarning | Ostrzeżenia składni podejrzane |
UserWarning | Ostrzega generowanie kodu użytkownika |
Wyjątek ten jest wydarzeniem, które pojawią się w trakcie realizacji programu, wpływając na normalne wykonywanie programu.
W normalnych warunkach, gdy programy Python nie obsługują prawidłowo wystąpi wyjątek.
Wyjątkiem jest Pythona obiekt reprezentujący błąd.
Wyjątek występuje wtedy, gdy skrypt Pythona musimy uchwycić poradzić, w przeciwnym razie program zostanie zakończony.
Można złapać wyjątek za pomocą try / except.
try / wyjątkiem instrukcja jest używana do wykrywania błędów w bloku try, tak że oprócz rachunku złapać wyjątek i przetwarzania informacji.
Jeśli nie chcesz, wyjątek występuje, gdy koniec programu, po prostu spróbuj złapać go w środku.
Składnia:
Poniżej znajduje się prosty spróbować plpl chyba pl. składni innym:
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生
starają prace, gdy zaczyna się oświadczenie spróbować jest, python będą oznaczone w ramach obecnego programu, tak, że kiedy występuje nieprawidłowość może być tu z powrotem, spróbuj zapis jest wykonywany po pierwsze, co dzieje się dalej, zależy od realizacji czy istnieje wyjątek.
Oto prosty przykład, otwiera plik, zawartość treści pliku jest napisane, a nie wyjątek występuje:
#!/usr/bin/python # -*- coding: UTF-8 -*- try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: print "Error: 没有找到文件或读取文件失败" else: print "内容写入文件成功" fh.close()
Powyższe dane wyjściowe programu:
$ python test.py 内容写入文件成功 $ cat testfile # 查看写入的内容 这是一个测试文件,用于测试异常!!
Oto prosty przykład, otwiera plik, zawartość pisane w treści plików, ale plik nie ma uprawnień do zapisu wyjątek wystąpił:
#!/usr/bin/python # -*- coding: UTF-8 -*- try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: print "Error: 没有找到文件或读取文件失败" else: print "内容写入文件成功" fh.close()
Przed wykonaniem kodu w celu ułatwienia badań, możemy najpierw usunąć zapisu do pliku testfile polecenia jest następująca:
chmod -w testfile
Następnie wykonać powyższy kod:
$ python test.py Error: 没有找到文件或读取文件失败
Można używać bez typu wyjątku z wyjątkiem poniższych przykładach:
try: 正常的操作 plplplplplplplplplplpl except: 发生异常,执行这块代码 plplplplplplplplplplpl else: 如果没有异常执行这块代码
Przede sposób try-except do połowu wszystkie wyjątki, które występują. Ale to nie jest dobry sposób, za pośrednictwem tego programu nie możemy zidentyfikować konkretne informacje o wyjątku. Bo to rejestruje wszystkie wyjątki.
Można również korzystać z tego samego, z wyjątkiem sprawozdania obsłużyć wiele wyjątków, co następuje:
try: 正常的操作 plplplplplplplplplplpl except(Exception1[, Exception2[,pl.ExceptionN]]]): 发生以上多个异常中的一个,执行这块代码 plplplplplplplplplplpl else: 如果没有异常执行这块代码
try-finally, czy wyjątek występuje dokona ostatecznego kodu.
try: <语句> finally: <语句> #退出try时总会执行 raise
#!/usr/bin/python # -*- coding: UTF-8 -*- try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") finally: print "Error: 没有找到文件或读取文件失败"
Jeśli otworzysz plik nie posiada uprawnień do zapisu, wyjście jest w następujący sposób:
$ python test.py Error: 没有找到文件或读取文件失败
Ten sam przykład można również zapisać w następujący sposób:
#!/usr/bin/python # -*- coding: UTF-8 -*- try: fh = open("testfile", "w") try: fh.write("这是一个测试文件,用于测试异常!!") finally: print "关闭文件" fh.close() except IOError: print "Error: 没有找到文件或读取文件失败"
Gdy wyrzucony wyjątek w bloku try, bloku finally kodu natychmiast.
wreszcie blokować wszystkie sprawozdania po jej wykonaniu, wyjątek jest uruchamiany ponownie i wykonanie wyjątkiem kodu blokowego.
Zawartość parametr jest inny niż wyjątkiem.
Wyjątek mogą przyjmować parametry, jak parametry wyjściowe informacyjnych nieprawidłowości.
Można złapać wyjątek poprzez sprawozdania parametrów z następującymi wyjątkami:
try: 正常的操作 plplplplplplplplplplpl except ExceptionType, Argument: 你可以在这输出 Argument 的值pl.
Zmienne poboczna zazwyczaj zawarte w otrzymanym oświadczeniem wyjątku. Zmienne w postaci krotki mogą otrzymać jedną lub więcej wartości.
Krotka zazwyczaj zawiera ciąg błędów, błędnego numeru złym miejscu.
Poniżej przedstawiono przykłady jednym wyjątkiem:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def temp_convert(var): try: return int(var) except ValueError, Argument: print "参数没有包含数字\n", Argument # 调用函数 temp_convert("xyz");
Wyniki powyższych procedur są następujące:
$ python test.py 参数没有包含数字 invalid literal for int() with base 10: 'xyz'
Możemy użyć instrukcji do podniesienia sami wywołać wyjątek
podniesienia składnia jest następująca:
raise [Exception [, args [, traceback]]]
Oświadczenie Wyjątkiem jest typ wyjątku (np NameError) parametr jest nieprawidłowy wartość parametru. Ten parametr jest opcjonalny, jeśli nie pod warunkiem, argument Wyjątkiem jest "brak".
Ostatni argument jest opcjonalny (rzadko stosowane w praktyce), jeśli istnieje obiekt wyjątku śladu.
Wyjątkiem może być ciągiem znaków, klasę lub obiekt. Wyjątkiem Pythona dostarczanych przez jądro, w większości są instancjami klasy, która jest parametrem instancji klasy.
Bardzo proste określenie wyjątkiem, a mianowicie:
def functionName( level ): if level < 1: raise Exception("Invalid level!", level) # 触发异常后,后面的代码就不会再执行
Uwaga: Aby móc złapać wyjątek, "poza" oświadczenie musi być użyteczny, aby rzucić ten sam obiekt klasy wyjątku lub łańcuch.
Na przykład, możemy zrobić więcej niż wyjątek, "poza" oświadczenie jest w następujący sposób:
try: 正常逻辑 except "Invalid level!": 触发自定义异常 else: 其余代码
#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def mye( level ): if level < 1: raise Exception("Invalid level!", level) # 触发异常后,后面的代码就不会再执行 try: mye(0) // 触发异常 except "Invalid level!": print 1 else: print 2
Realizacja powyższego kodu, wyjście jest:
$ python test.py Traceback (most recent call last): File "test.py", line 11, in <module> mye(0) File "test.py", line 7, in mye raise Exception("Invalid level!", level) Exception: ('Invalid level!', 0)
Tworząc nową klasę wyjątku, program może wymienić swoje wyjątki. Typowe wyjątki powinny być dziedziczone z klasy Exception, bezpośrednio lub pośrednio.
Obserwowany jest związany z RuntimeError instancji przykład utworzyć klasę, klasa bazowa jest RuntimeError, do wyprowadzania dodatkowych informacji, gdy wyjątek jest wyzwalany.
W bloku try, użytkownik wykonuje oświadczenie bloku oprócz niestandardowego wyjątku e zmienna jest używana do tworzenia instancji Networkerror klasę.
class Networkerror(RuntimeError): def __init__(self, arg): self.args = arg
Po zdefiniowaniu powyższych kategorii, można wywołać wyjątek, a mianowicie:
try: raise Networkerror("Bad hostname") except Networkerror,e: print e.args