Python - Разширено боравене с изключения

Съдържание
След като възникне изключение, наш дълг е да можем да се справим с него, по този начин нашата програма ще може да изпълни действие, да повдигне съобщение, да поиска корекцията на параметъра, въведен от потребителя, накратко, много възможности .
Улов на изключения
Както споменахме по -рано, важното нещо, когато видим изключение, е да можем да го уловим по този начин, можем да решим какво трябва да направи програмата, когато възникне тази ситуация, за да направим това, ще използваме командите пробвай / с изключение. За да демонстрираме горното, ще анализираме много проста програма за разделяне, тъй като знаем, че не можем да разделим число на 0, така че това ще доведе до изключение.
Нека започнем изграждането на нашия код, не забравяйте, че можем да направим това във всеки текстов редактор и трябва да запишем файла с разширение .py, за да можем да го изпълним в нашия команден ред или конзола.
 x = вход ('Въведете първото число:') y = вход ('Въведете второто число:') печат x / y [ / размер] [размер = 4]

Това ще работи доста правилно, докато потребителят въведе стойността 0 като втори аргумент, това ще предизвика изключение, както можем да видим в следното изображение на изпълнението на тази програма:

Можем да предотвратим това, като използваме пробвай / с изключение което видяхме в началото на този раздел, нека видим нашия коригиран код:
 try: x = input ('Въведете първото число:') y = input ('Въведете второто число:') print x / y с изключение на ZeroDivisionerror: print "Второто число не може да бъде нула!" 

Този начин на справяне с този случай е доста чист, въпреки всичко би могло да се каже, че и с прост ако това би изисквало стойността на Y Това не би било 0 би било адекватно решение, но ако добавим повече разделения към нашата програма, ще ни трябват повече условни, вместо това по този начин имаме нужда само от един манипулатор на възможното изключение, което се генерира.
Уловете повече от едно изключение
Продължавайки с примера за разделението, върху което работихме, нека видим какво би станало, ако вместо 0 въведем нещо друго:

На изображението можем да видим, че е въведен текст и нашият манипулатор, който очаква само изключение от типа ZeroDivisionerror не може да направи правилно обработка, тъй като не знае какво да прави с новото генерирано изключение.
За да хванем новото изключение, просто ще добавим нов блок с изключение за да може да се справи с изключението TypeError което се генерира чрез разделяне на число на текст.
Нека видим коригирания код:
 try: x = input ('Въведете първото число:') y = input ('Въведете второто число:') print x / y с изключение на ZeroDivisionerror: print "Второто число не може да бъде нула!" освен TypeError: print "Това не беше число, нали?" 

Ако бяхме избрали да използваме условни условия ако, тази задача би ни отнела много повече редове код, освен да направи програмата ни по -малко четлива.
Улавяне на две изключения в един и същ блок
Ако това, от което се нуждаем, е да хванем няколко изключения в един блок с изключение това, което трябва да направим, е да ги добавим в декларацията в скоби, нека да видим кода, за да го разберем по -добре:
[ / size] try: x = input ('Въведете първото число:') y = input ('Въведете второто число:') print x / y с изключение на ZeroDivisionerror: print "Второто число не може да бъде нула!" с изключение на TypeError: [/ size] [size = 4] print "Това не беше число, нали?" 

Както видяхме, каквото и да се случи, приложението ще продължи да ни изпраща същото съобщение независимо дали е въведено 0 или е въведено нещо различно от число.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave