Изключение е събитие, което възниква по време на изпълнението на програма за прекратяване или промяна на нормалния поток на програма. Грешка например поражда изключение. Подобно на други езици за програмиране, Python съдържа много вградени изключения. Тези изключения се пораждат, ако при изпълнението на програмата се срещне грешка. Типът грешка определя кое изключение ще бъде повдигнато. Когато възникне изключение, интерпретаторът на Python проверява дали изключението се обработва; ако не, то прекратява програмата. Тази статия обяснява изключенията в Python чрез различни примери.
Вградени изключения на Python
Както беше обсъдено по-рано, Python има много вградени изключения, които се появяват, когато възникне грешка по време на изпълнението на програма. Всяко изключение се извлича от основен клас „Изключение“. По-долу са включени някои вградени изключения на Python, заедно с кратко описание на всеки тип изключение:
Изключение | Описание |
---|---|
Изключение | Всяко изключение е получено от този клас. |
ImportError | Това изключение се повдига, когато се импортира конкретен модул и той не е намерен. |
EOFError | Това е изключението в края на файла. Това изключение възниква при достигане на края на файла. |
ZeroDivisionError | Това изключение се повдига, когато число се дели на нула. |
KeyError | Това изключение се повдига, ако се посочи или използва определен ключ, който не е дефиниран в речника. |
IndexError | Това изключение се повдига, когато се опитва достъп до индекс на последователност, който не е в обхвата. |
FloatingPointError | Това изключение се повдига, когато операцията с плаваща запетая е неуспешна. |
Това са някои от вградените изключения в Python. Моля, посетете официалната документация за повече информация относно използването на вградени изключения в Python, намираща се на https: // docs.питон.org / 3 / библиотека / изключения.html.
Използване на изключение в Python
Изключенията в Python се обработват с помощта на инструкцията try. Кодът, който може да хвърли или предизвика изключение, е реализиран в блок за опит. До блока try се прилага блок освен за обработка на изключението. В блока освен хващаме изключението и решаваме каква операция да извършим, когато срещнем това конкретно изключение. Синтаксисът на писане на блокове try и освен е следният:
опитвам:изпълнете операцията или функцията
с изключение:
функционалност за обработка на изключението
Сега ще приложим прост код в нашия Python скрипт, като използваме блоковете try и освен.
Тук ще отпечатаме променлива „name“, която не е дефинирана. Това поражда изключение в блока освен.
#implementing the try blockопитвам:
печат (име)
#implementing the exclu block
с изключение:
print ("Възникна изключение")
Изход
Ако не възникне изключение, тогава се изпълнява само блокът try. В блока освен се отпечатва изявление, че е възникнало изключение.
Нека разгледаме друг пример, където дефинираме променливата на името:
#defining the name променливаname = "Маркиране"
#implementing the try block
опитвам:
печат (име)
#implementing the exclu block
с изключение:
print ("Възникна изключение")
Изход
В горния пример блокът try се изпълнява и блокът Освен се пропуска, тъй като програмата не създава изключения. Можем да дефинираме колкото искаме освен блокове в нашата програма. Всеки блок освен обработва специфичен вид изключение.
#implementing the try blockопитвам:
печат (име)
#implementing the exclu block за улавяне на грешката в името
с изключение на NameError:
print ("Променливата не е дефинирана")
#implementing the exclu block
с изключение:
print ("Нещо се обърка освен грешка в името")
Изход
В Python, Exception е основният клас за всички изключения. Вместо да напишем името на конкретно изключение в блока с изключение, можем просто да напишем „Изключение“ и да уловим всеки тип изключение по този начин.
#implementing the try blockопитвам:
печат (име)
#implementing the exclu block за улавяне на грешката
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing the exclu block
с изключение:
print ("Нещо се обърка, освен грешка в името")
Изход
Експ.__class__ връща името на класа на изключение.
По същия начин, нека разгледаме пример за класа „ZeroDivisionError“.
#implementing the try blockопитвам:
x = 1/0
печат (x)
#implementing the exclu block за улавяне на грешката
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing the exclu block
с изключение:
print ("Нещо се обърка, освен грешка в името")
Изход
Блокът else
Блокът else се използва с блоковете за опит и изключение. Блокът else определя парче код, който се изпълнява, ако блокът try се изпълни успешно и не възникне грешка. Понякога може да се наложи да отпечатате съобщение или да изпълните функция, когато опитният блок е изпълнен успешно. Поради тази причина можем да приложим блока else с блоковете try и освен.
В този пример ще приложим блока else в нашия Python скрипт.
#implementing the try blockопитвам:
x = 1/2
печат (x)
#implementing the exclu block за улавяне на грешката
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing else блок
друго:
print ("Всичко мина добре")
Изход
Блокът else се изпълнява след успешното изпълнение на блока try.
Нека сега разгледаме друг пример, използващ блока else.
#implementing the try blockопитвам:
name = "Маркиране"
#implementing the exclu block за улавяне на грешката
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing else блок
друго:
print ("Името е:", име)
Изход
В горния пример променливата на името се дефинира вътре в блока try и се отпечатва в блока else.
Последният блок
The накрая block съдържа парчето код, което трябва да бъде изпълнено, независимо дали блокът try предизвиква изключение. Блокът final не е задължителен и се декларира с блока try. Например, ако сме отворили текстов файл, за да прочетем блока try и това води до грешка или изключение, по-добре е да приложите файла в блока final, дори ако грешката възникне. Нека приложим окончателния блок в нашия скрипт на Python.
#implementing the try blockопитвам:
печат (my_dict)
#implementing the exclu block за улавяне на грешката
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing окончателния блок
накрая:
print ("Това е последният блок")
print ("Най-накрая блокът е изпълнен")
Изход
В изхода може да се види, че блокът try предизвиква изключение. Блокът final обаче се изпълнява в края.
Сега нека отворим текстов файл в блока try, което поражда изключение, докато файлът е затворен в блока final.
#implementing the try blockопитвам:
fileObj = отворен ("mystudent.xml "," r ")
fileObj.търся (-2)
print (fileObj.прочетени линии ())
#implementing the exclu block
с изключение на изключение като exp:
печат (exp.__клас__)
#implementing окончателния блок
накрая:
fileObj.близо()
print ("Файлът е успешно затворен")
Изход
Както можете да видите, независимо от грешката в стойността, файлът е затворен успешно в блока окончателно.
Направете изключение
Въпреки че изключенията се повдигат автоматично, когато възникне грешка, в Python можете също да създавате изключения ръчно. The повишаване ключова дума се използва за повишаване или изхвърляне на изключението.
Сега ще повдигнем някои изключения с помощта на ключовата дума rise. В следващия пример се изпълнява условието if за проверка на неотрицателни числа. Ако съществуват някакви неотрицателни числа, тогава се повдига изключението „Неотрицателните числа не са разрешени“.
#declaring две числови променливиnum1 = 20
num2 = -10
if ((num1<0) | (num2<0)):
повишаване на изключение („Неотрицателните числа не са разрешени“)
друго:
печат (num1 + num2)
Изход
Заключение
Изключение възниква в отговор на грешка по време на изпълнение. В Python можем да обработваме изключения, като използваме блоковете try и освен. Тази статия обяснява как се използват изключения в Python чрез различни примери.