Išimčių išmetimas Python, kad būtų galima tvarkyti išimtis

Išimčių išmetimas Python, kad būtų galima tvarkyti išimtis
Išimčių išmetimas Python, kad būtų galima tvarkyti išimtis

Išimčių tvarkymo „Python“ supratimas

Python programoje išimtys yra galingas įrankis, leidžiantis tvarkyti klaidas ir išskirtinius atvejus, kurie gali atsirasti vykdant programą. Rankiniu būdu nustatydami išimtis, kūrėjai gali pranešti apie konkrečių problemų atsiradimą ir efektyviau valdyti savo programų srautą.

Šiame vadove bus nagrinėjamas neautomatinio Python išimčių nustatymo procesas, leidžiantis suprasti, kaip valdyti klaidų apdorojimo mechanizmą kode. Tinkamas išimčių naudojimas gali padidinti jūsų Python programų patikimumą ir skaitomumą.

komandą apibūdinimas
raise Naudojamas rankiniu būdu suaktyvinti išimtį Python.
try Apibrėžiamas kodo blokas, skirtas tikrinti, ar nėra klaidų vykdymo metu.
except Sulaiko ir tvarko išimtis, atsirandančias bandant bloke.
else Vykdo kodo bloką, jei trynimo bloke nėra išimčių.
ValueError Integruota išimtis, atsirandanti, kai funkcija gauna tinkamo tipo argumentą, bet netinkamą reikšmę.
__init__ Inicijuoja klasės atributus, dažniausiai naudojamus apibrėžiant pasirinktines išimtis.

Išsamus išimčių tvarkymo scenarijų paaiškinimas

Pirmajame scenarijaus pavyzdyje funkcija 0 parodo, kaip rankiniu būdu iškelti išimtį naudojant raise komandą. Jei daliklis b yra nulis, funkcija pakelia a ValueError su pasirinktiniu pranešimu "Negalima padalyti iš nulio!" Tai veiksmingai sustabdo funkcijos vykdymą ir perduoda valdymą try blokas, kuris bando iškviesti funkciją su argumentais class NegativeNumberError(Exception): ir 0. Kai išimtis padidinama, valdymas perduodamas except blokas, kuris sugauna ValueError ir išspausdina klaidos pranešimą. Jei nekeliama išimtis, else būtų vykdomas blokas, išspausdinamas padalijimo rezultatas.

Antrasis scenarijus apima pasirinktinę išimties klasę class NegativeNumberError(Exception): kad paveldima iš Python integruoto Exception klasė. The __init__ metodas inicijuoja išimtį reikšme ir __str__ metodas grąžina klaidos eilutę. Funkcija def check_positive_number(n): iškelia šią pasirinktinę išimtį, jei įvestis n yra neigiamas. Viduje try blokas, funkcija iškviečiama su -5, kuris pakelia NegativeNumberError ir perduoda valdymą except blokas, kuriame išspausdinamas klaidos pranešimas. Jei nebūna išimtis, else blokas patvirtina, kad skaičius yra teigiamas.

Kaip padidinti ir tvarkyti išimtis Python

Python programavimo pavyzdys

# Function to demonstrate raising an exception
def divide_numbers(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero!")
    return a / b

# Main block to catch the exception
try:
    result = divide_numbers(10, 0)
except ValueError as e:
    print(f"Error: {e}")
else:
    print(f"Result: {result}")

Pasirinktinis išimčių tvarkymas Python programose

Python su pasirinktomis išimtimis

# Defining a custom exception
class NegativeNumberError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return f"Negative numbers are not allowed: {self.value}"

# Function to demonstrate raising a custom exception
def check_positive_number(n):
    if n < 0:
        raise NegativeNumberError(n)
    return n

# Main block to catch the custom exception
try:
    number = check_positive_number(-5)
except NegativeNumberError as e:
    print(f"Error: {e}")
else:
    print(f"Number is positive: {number}")

Išplėstinė išimčių tvarkymo technika Python

Be standartinių ir pasirinktinių išimčių didinimo ir tvarkymo, „Python“ siūlo keletą pažangių išimčių tvarkymo metodų, kurie gali būti labai naudingi sudėtingose ​​programose. Viena iš tokių technikų yra naudojant finally blokas. The finally blokas leidžia kūrėjams vykdyti tam tikrą kodą, nepaisant to, ar įvyko išimtis. Tai gali būti ypač naudinga atliekant išteklių valdymo užduotis, pvz., uždarant failus arba atjungiant tinklo ryšius. Užtikrindami, kad kritinis valymo kodas būtų visada vykdomas, galite padaryti savo programas patikimesnes ir išvengti išteklių nutekėjimo.

Kita išplėstinė funkcija yra galimybė sujungti išimtis naudojant from raktažodį. Kai iškeliate išimtį, galite pateikti kitą ją sukėlusią išimtį, sukurdami aiškią priežasties ir pasekmės grandinę. Tai labai naudinga derinant, nes suteikia daugiau konteksto apie klaidų seką. Be to, Python konteksto tvarkyklės, naudojamos su with pareiškimą, gali padėti efektyviau valdyti išteklius. Konteksto tvarkyklės automatiškai tvarko sąrankos ir išardymo procesus, užtikrindamos, kad ištekliai būtų tinkamai valdomi, net jei vykdant įvyksta klaida.

Dažni klausimai ir atsakymai apie išimčių tvarkymą Python

  1. Kaip nustatyti pasirinktinę išimtį „Python“?
  2. Galite nustatyti tinkintą išimtį apibrėždami naują klasę, kuri paveldima iš Exception ir naudojant raise teiginys su tos klasės pavyzdžiu.
  3. Koks yra tikslas finally blokuoti?
  4. The finally blokas naudojamas vykdyti kodui, kuris turėtų būti paleistas neatsižvelgiant į tai, ar buvo padaryta išimtis, ar ne, dažnai naudojamas valymo veiksmams.
  5. Kaip galiu susieti išimtis „Python“?
  6. Galite susieti išimtis naudodami from raktinis žodis, leidžiantis iškelti naują išimtį, išsaugant pradinės išimties kontekstą.
  7. Kas yra konteksto tvarkyklė Python?
  8. Konteksto tvarkyklė yra būdas valdyti išteklius naudojant with pareiškimą, kad įsitikintumėte, jog sąrankos ir išardymo kodas vykdomas tinkamai.
  9. Kaip tvarkyti kelias išimtis viename bloke?
  10. Galite tvarkyti kelias išimtis vienu metu except blokuoti nurodydami išimčių tipų eilutę.
  11. Ar galiu sugauti visas išimtis vienu bloku?
  12. Taip, visas išimtis galite sugauti naudodami pliką except: pareiškimą, tačiau paprastai jis nerekomenduojamas, nes gali paslėpti klaidas.
  13. Kas atsitiks, jei išimtis nebus gauta?
  14. Jei išimtis nepagaunama, ji iškviečia skambučių krūvą ir galiausiai nutraukia programą, parodydama atsekimą.
  15. Kaip užregistruoti išimtis Python?
  16. Galite registruoti išimtis naudodami logging modulis, kuris suteikia lanksčias medienos ruošos galimybes.
  17. Koks skirtumas tarp assert ir raise?
  18. assert naudojamas derinimo tikslais sąlygoms patikrinti, tuo tarpu raise naudojamas rankiniu būdu išmesti išimtis įprasto vykdymo metu.

Paskutinės mintys apie išimčių tvarkymą Python

Rankinis išimčių kėlimas „Python“ yra esminis įgūdis, norint gražiai valdyti klaidas ir užtikrinti patikimą kodo vykdymą. Naudodami integruotas ir pasirinktines išimtis, kūrėjai gali sukurti lengviau skaitomas ir prižiūrimas programas. Supratimas apie pažangias technologijas, tokias kaip išimčių sujungimas ir konteksto tvarkyklių naudojimas, dar labiau pagerina klaidų valdymą. Tinkamas išimčių tvarkymas ne tik pagerina programos patikimumą, bet ir padeda derinti bei valdyti išteklius.