Како ухватити више изузетака у Питхон-у: Једноставан водич

Хватање изузетака у Питхон-у помаже да се ваши програми ређе падају. Ово чини ваш код поузданијим и пружа боље корисничко искуство. У овом чланку ћу разговарати о томе како ухватити више изузетака у истом блоку три/екцепт у Питхон-у.

Шта су изузеци у Питхон-у?

У Питхон, Изузеци су механизам комуникације између различитих делова програма. Овај комуникациони механизам омогућава једном делу система да саопшти да је наишао на критичну грешку са којом не зна како да се носи.

Дакле, то ствара изузетак. Други део програма који зна како да рукује грешком ухватиће изузетак и правилно поступати са грешком.

Када се не обрађују, изузеци ће срушити програм. Према томе, руковање изузецима спречава пад вашег програма и чини га поузданијим.

За овај чланак, претпостављам да сте већ упознати са основама подизања и руковања изузецима, што је покривено у овом чланку Увод у Питхон Три/Екцепт.

Важност руковања вишеструким изузецима у Питхон-у

  • Смањује дуплицирање кода јер више изузетака обрађује исти блок. Ово чини код лакшим за читање, уређивање и брисање.
  • Такође вам помаже да напишете ефикаснији код јер се тип грешке мора проверити само једном уместо неколико пута.

Руковање вишеструким изузецима

Хватање више изузетака се односи на ситуацију у којој је више изузетака ухваћено коришћењем истог блока осим. У Питхон-у можете ухватити различите изузетке у појединачним осим блокова.

  6 најбољих АИ генератора одредишних страница за повећање ваше генерације потенцијалних купаца

Алтернативно, када желите да поступате са изузецима на сличан начин, можете их руковати помоћу једног блока. Да бисте то урадили, мораћете да ухватите више изузетака. У овом одељку ћу објаснити како то учинити на примеру.

#1. Хватање различитих изузетака у различитим блоковима

Претпоставимо да имамо програм дизајниран да узме две различите вредности и подели их. У овом програму предвиђамо да ће се појавити различити типови изузетака када корисник унесе неважеће вредности. Конкретно, желимо да обрадимо ВалуеЕррор и ЗероДивисионЕррор.

ВалуеЕррор ће бити подигнут када корисник унесе вредност која се не може конвертовати у цео број. ЗероДивисионЕррор ће бити подигнута када је други број нула. У оба ова случаја желимо да прикажемо поруку о грешци која каже: „Унели сте неважећу вредност“.

Да бисмо урадили горе наведено, можемо написати следећи код:

try:
    dividend = int(input('Enter first num: '))
    divisor = int(input('Enter second num: '))
    quotient = dividend / divisor
    print(quotient)
except ValueError as e:
    print("You entered an invalid value")
except ZeroDivisionError as e:
    print("You entered an invalid value")
except Exception as e:
    print("Something went wrong")

Ако покренемо горњи код и текст који се не може конвертовати у цео број, ово ће бити резултат:

А ако бисмо други број унели као 0, ово би био резултат:

Код функционише како се очекује, али приметите да на сличан начин поступамо са ВалуеЕррор и ЗероДивисионЕррор. Дакле, постоји много дуплицирања кода између два блока осим. Ово није идеално, јер кршимо ДРИ принцип у програмирању. ДРИ принцип каже да се не понављај.

Дакле, уместо да пишемо код одвојено, можемо комбиновати два блока у један блок који хвата више изузетака. Ако то урадимо, избегавамо понављање.

  Како блокирати претраживаче ОпенАИ-а да скрежу вашу веб локацију

#2. Хватање више изузетака у једном блоку осим

Да бисмо ухватили више изузетака, обезбеђујемо тупле који наводи све грешке које желимо да ухватимо. Ево примера где хватамо и ВалуеЕррор и ЗероДивисионЕррор у једном блоку осим:

try:
    dividend = int(input('Enter first num: '))
    divisor = int(input('Enter second num: '))
    quotient = dividend / divisor
    print(quotient)
except (ValueError, ZeroDivisionError) as e:
    print("You entered an invalid value")
except Exception as e:
    print("Something went wrong")

Ово је много боља имплементација од претходног кода. У суштини, ради се о руковању вишеструким изузецима. Код изнад ради на исти начин као и раније. Ако тестирате користећи претходне примере, требало би да ради као и раније:

#3. Идентификовање који изузетак је ухваћен

Код изнад извршава први блок осим када је ухваћен или ВалуеЕррор или ЗероДивисионЕррор. У неким случајевима, можда имате код који желите да извршите за обе грешке и неки други код који желите да извршите за једну, али не и за другу грешку.

У овом случају, прво морате да идентификујете која је грешка ухваћена и извршите одговарајући код.

Да бисте идентификовали који је изузетак ухваћен, можете користити блок иф/елсе унутар блока осим. На пример:

try:
    dividend = int(input('Enter first num: '))
    divisor = int(input('Enter second num: '))
    quotient = dividend / divisor
    print(quotient)
except (ValueError, ZeroDivisionError) as e:
    print("You entered an invalid value")

    if isinstance(e, ValueError):
        print('Value Error')
    else:
        print('Zero Division Error')
except Exception as e:
    print("Something went wrong")

У овом блоку, поред штампања генеричке поруке о грешци и за ВалуеЕррор и за ЗероДивисионЕррор, такође проверавамо тачно коју врсту грешке смо ухватили и штампамо додатну поруку. Ако поново тестирамо код, требало би да видимо неке додатне поруке специфичне за ухваћен изузетак.

  Како да промените своју почетну страницу у Гоогле Цхроме-у

Када бисте желели да се бавите вишеструким изузецима?

У општем случају, руковање вишеструким изузецима је идеално када желите да извршите исти код за сличне изузетке који се могу покренути. Ово укључује следеће:

  • Мрежни захтеви који нису успели из различитих разлога. Без обзира на то, можда ћете желети да обавестите корисника да сервер није доступан.
  • Неуспеле везе са базом података, које производе више грешака. Иако ове грешке могу бити различите, ваше руковање може бити исто.
  • У/И фајл такође производи грешке којима се може руковати на сличан начин, као што су дозволе и грешке пуне диска.

Закључак

Овај чланак говори о комбиновању више блокова осим у један хватањем више изузетака истовремено. Ово помаже да ваш код постане читљивији и лакши за одржавање. Следеће, можда ћете желети да прочитате овај чланак о Питхон почетничким пројектима које бисте требали испробати.