Išimčių tvarkymas - tai galimybė pritaikyti ir rodyti klaidos pranešimus toms programos dalims, kurios neveikia.

Nesvarbu, ar kuriate svetainę, kuriate API, modulį ar bet kurį kitą produktą naudodami „Python“, galimybė efektyviai tvarkyti išimtis leidžia aiškiai nurodyti klaidos priežastį.

Čia mes apžvelgsime, kaip galite tvarkyti išimtis „Python“.

Kaip „Python“ veikia išimčių tvarkymas

Kai keliate išimtis, liepiate „Python“ pateikti pranešimą, kai nepavyksta kodo bloko. Išimties tvarkymas yra tarsi liepimas kažkam pabandyti pakelti svorį. O jei negali, turėtų apie tai pranešti.

Tačiau norėdami iškelti „Python“ išimtį, liepsite „Python“ pabandyti paleisti tam tikrą kodo bloką. Jei tas blokas nepavyksta, galite paprašyti „Python“ iškelti apibrėžtą nepavykusio kodo išimtį.

Kada turėtumėte naudoti išimtis programuojant „Python“?

Daugeliu atvejų galite užmaskuoti standartines „Python“ klaidas naudodami išimtis. Bet jūs turite išlikti budrūs, nes tai gali sukelti derinimo problemų. Todėl jums gali būti sunku išsiaiškinti pagrindinę klaidos priežastį.

Todėl turėtumėte naudoti išimtis, kai pakankamai patikrinsite savo kodą ir būsite tikri, kad jis veikia. Galų gale geriausia praktika juos naudoti norint pašalinti galimus gedimus, kurie gali kilti dėl vartotojo galo, o ne paties kodo.

Kitaip tariant, galite naudoti išimtis kaip įspėjamąjį įrankį, kad vartotojai nurodytų, kaip naudotis jūsų programa.

„Python“ išimčių tvarkymas

Norėdami tvarkyti išimtis „Python“, pirmiausia turite suvynioti kodą į pabandyk... išskyrus blokuoti. Kartais gali tekti įtraukti a pagaliau pareiškimas tvarkyti tolesnius veiksmus, atsižvelgiant į jūsų poreikius.

„Python“ išimčių kodavimo samprata paprastai atrodo taip:

bandyti:
"vykdomas kodas"
išskyrus:
„klaidos pranešimas“

Kaip minėta anksčiau, taip pat galite naudoti pagaliau išimčių bloke. Bet kodas, kurį rašote viduje pagaliau sąlyga yra nepriklausoma ir taikoma, jei yra išimtis, ar ne.

Iš esmės tai praverčia, jei turite kitą kodo bloką, kurį norite paleisti nuolat, nepaisant to, kas vyksta pabandyk... išskyrus blokuoti.

Štai pavyzdys:

bandyti:
spausdinti (9 + 6)
išskyrus:
spausdinti („klaidos pranešimas“)
pagaliau:
spausdinti („prašau paleisti iš naujo“)
Išvestis:
15
paleiskite iš naujo

Pirmiau pateiktame kode paleiskite iš naujo veikia nuolat, neatsižvelgiant į tai, ar yra išimtis, ar ne.

An Kitas būklė taip pat gali sekti išskyrus pareiškimas:

bandyti:
C = 2 + B
išskyrus:
spausdinti („reikia apibrėžti B“)
Kitas:
spausdinti (u "Pridėta sėkmingai! Rezultatas yra% s "% (C))
Išvestis: Reikia apibrėžti B

Dabar pabandykite dar kartą apibrėžę „B“:

bandyti:
B = 5
C = 2 + B
išskyrus:
spausdinti („reikia apibrėžti B“)
Kitas:
spausdinti (u "Pridėta sėkmingai! Rezultatas yra% s "% (C))
Išvestis: Sėkmingai pridėta! Rezultatas yra 7

Pirmiau pateikti pavyzdžiai yra nestandartizuotos išimtys. Bet jūs galite turėti aiškesnę išimtį, kai sujungiate įmontuotas (apibrėžtas) išimtis su nestandartinėmis:

bandyti:
C = 2 + B
išskyrus NameError kaip klaidą:
spausdinti (klaida, ":", "B reikia apibrėžti, prašau")
Kitas:
spausdinti (u "Pridėta sėkmingai! Rezultatas yra% s "% (C))
Išvestis: vardas „B“ nėra apibrėžtas: prašome apibrėžti B

Pirmiau nurodyta išimtis pirmiausia patikrina, ar yra PavadinimasKlaida viduje konors bandyti blokuoti. Tada atspausdina standartą PavadinimasKlaida pirma išimtis („pavadinimas„ B “neapibrėžtas“). Ir palaiko tai su jūsų rašytine išimtimi („B reikia apibrėžti, prašau“).

Susijęs: Pagrindiniai programavimo principai, kuriuos turi žinoti kiekvienas programuotojas

Ir jei norite elgtis su išimtimis, taip pat galite pridėti a bandyti blokuoti su daugeliu išskyrus pareiškimus. Tai yra gana patogu, jei jūsų bandyti blokas gali turėti daug išimčių:

bandyti:
B = 5
C = 2 + B
D = plūdė (6)
F = 7/0
išskyrus NameError kaip klaidą:
spausdinti (klaida, ":", "B reikia apibrėžti, prašau")
išskyrus „ValueError“ kaip val:
spausdinti (val, ":", "Negalite konvertuoti tų duomenų")
išskyrus „ZeroDivisionError“ kaip „zeroerr“:
spausdinti (zeroerr, ":", "Negalite skaičiaus padalyti iš nulio")
Kitas:
spausdinti (u "Operacija sėkminga! Rezultatai:% s,% s ir% s "% (C, D, F))
Išvestis: padalijimas iš nulio: Skaičiaus negalima padalyti iš nulio

Ką daryti, jei padalijimas galioja? Pavyzdžiui, pakeisti F = 7/0 aukščiau esančiame kode su F = 7/5 suteikia:

Išvestis: Operacija sėkminga! Rezultatai: 7, 6,0 ir 1,4

Vartotojo nustatytos „Python“ išimtys

Taip pat galite sugalvoti savo išimtį ir paskambinti jiems vėliau savo programoje. Tai leidžia jums pateikti konkretų savo išimties aprašymą ir pavadinti ją taip, kaip jums patinka.

Nepaisant to, kiekviena vartotojo apibrėžta išimtis (tiesiogiai ar netiesiogiai) vis tiek yra integruota Išimtis „Python“ klasė.

Žemiau pateiktame kodo pavyzdyje nurodoma bazė Išimtis tiesiogiai skambindami Klaida iš jo:

klasės jungties klaida („RuntimeError“):
def __init __ (savastis, vertė):
savivertė = vertė
bandyti:
kelia ryšio klaidą („netinkamas pagrindinio kompiuterio vardas“)
išskyrus ryšio klaidą kaip klaidą:
spausdinti (klaidinga vertė)
Išvestis: Netinkamas pagrindinio kompiuterio vardas

Prisimink tai ryšio klaida, šiuo atveju yra vartotojo apibrėžta klasė, kurią galite pakelti bet kada, kai to reikia jūsų programoje.

Susijęs: „Beginner's Guide to Regular Expressions With Python“

Galite padaryti vartotojo apibrėžtą išimtį išvedę ją tiesiai iš Išimtis bazinė klasė. Tačiau toliau nurodyta išimtis neleidžia atimti 5 iš 6 ir tiesiogiai vadina išimtį iš bazinės klasės:

klasės klaidos (išimtis):
praeiti
class sixFiveError (klaidos):
def __init __ (savęs, vertės, pranešimo):
savivertė = vertė
savęs žinutė = pranešimas
bandyti:
pakelti sixFiveError (6–5, „Šis sutrumpinimas neleidžiamas“)
išskyrus „sixFiveError as e“:
spausdinti ("Įvyko klaida:", el. pranešimas)
Išvestis: Įvyko klaida: šis sutrumpinimas neleidžiamas

Praktiškai galite naudoti anksčiau apibrėžtą išimtį iškvietę ją kita funkcija. Pavyzdžiui, galite sukurti floatError tai leidžia pridėti tik dvi plūdes:

# Pirmasis iškvieskite pagrindines išimčių klases:
klasės klaidos (išimtis):
praeiti
# Tada gaukite savo išimtį iš pagrindinės klasės:
klasė „FloatError“ (klaidos):
def __init __ (savęs, vertės, pranešimo):
savivertė = vertė
savęs žinutė = pranešimas
# Sukurkite funkciją, kad pridėtumėte dvi plūdes:
def addTwoFloat (a, b):
jei (tipas (a) ir tipas (b))! = plūduriuojantis:
pakelti „FloatError“ (a + b, „Norint pridėti skaičių, skaičius turi būti plaukiojantis“)
Kitas:
spausdinti (a + b)
„addTwoFloat“ (4, 7)
Išvestis: __main __. „FloatError“: (11, „Norint pridėti skaičių, numeriai turi būti plūduriuojantys“)

Nes jūs dabar apibrėžėte a „FloatError“ klasę, „Python“ ją iškelia, jei bandysite pridėti du neplūdančius literalus naudodami „addtwoFloat“ funkcija.

Galite atsispausdinti „FloatError“ klasę tame pačiame „Python“ faile, kur jį sukūrėte, kad pamatytumėte, kas vyksta:

spausdinti („FloatError“)
Išvestis:

„FloatError“vis dėlto nėra įmontuota „Python“ išimtis. Tai galite patikrinti paskambinę „FloatError“ kitame naujame „Python“ faile, kuriame nesate sukūrę šios klasės:

spausdinti („FloatError“)
Išvestis: „NameError“: pavadinimas „FloatError“ nėra apibrėžtas

Jūs gaunate PavadinimasKlaida nes „Python“ jo nepripažįsta kaip standartinės išimties.

Galite pabandyti patys apibrėžti ir kitas klaidų klases, kad pamatytumėte, kaip jos veikia.

Padarykite „Python“ programas patogesnes, išskyrus išimtis

„Python“ yra daugybė standartinių išimčių. Bet jūs galite apibrėžti ir savo. Nepaisant to, paprastas programos naudojimas tam tikru mastu priklauso nuo to, kaip ji elgiasi su įvairiomis išimtimis (vartotojo apibrėžtomis, nespecifinėmis ar standartinėmis).

Tačiau išimtys leidžia jums nusakyti, kaip jūsų programa turėtų veikti, kai vartotojai su jomis bendrauja. Aiškiai ir glaustai nurodant klaidos priežastį, vartotojai taip pat gali žinoti, ką jie daro blogai, o kartais tai nukreipiama teisinga linkme.

El
Kaip derinti jūsų „Python“ kodą

Įsirenkite patirties, kaip sutramdyti kiekvieną „Python“ klaidą jūsų kelyje.

Skaitykite toliau

Susijusios temos
  • Programavimas
  • „Python“
  • Kodavimo pamokos
Apie autorių
Idowu Omisola (Paskelbti 82 straipsniai)

Idowu yra aistringas dėl bet kokių protingų technologijų ir produktyvumo. Laisvalaikiu jis žaidžia su kodavimu ir, kai nuobodžiauja, pereina prie šachmatų lentos, tačiau taip pat mėgsta kartkartėmis atitrūkti nuo rutinos. Aistra parodyti žmonėms kelią aplink šiuolaikines technologijas skatina daugiau rašyti.

Daugiau iš Idowu Omisola

Užsiprenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.