Poikkeusten Nostaminen Pythonissa: Virheiden Laukaiseminen ja Hallinta
Poikkeukset Pythonissa tulisi nostaa osoittamaan, että virhetilanne on tapahtunut, mikä tekee funktion tai metodin aiotun tehtävän suorittamisesta mahdotonta. Tämä on erityisen hyödyllistä tilanteissa, joissa pelkkä None-arvon tai vastaavan palauttaminen voisi olla epäselvää eikä välttämättä ilmaise riittävästi, että virhe on tapahtunut.
Vakio-poikkeuksen nostaminen
Poikkeuksen nostamiseen Pythonissa käytetään raise-lauseketta. Tässä on yksinkertainen esimerkki:
123456789def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year age = current_year - birth_year if age < 0: raise ValueError("The birth year cannot be in the future") return age calculate_age(2034)
Tässä esimerkissä nostetaan ValueError, jos birth_year on suurempi kuin kuluvan vuoden arvo, mikä osoittaa, että annettu syntymävuosi on virheellinen.
Oman poikkeuksen luominen
Vaikka Pythonin sisäänrakennetut poikkeukset kattavat monia eri tilanteita, joskus voi olla tarpeen määritellä omia poikkeuksia, jotta voidaan selkeästi ilmaista tiettyyn sovellusalueeseen liittyvä virhetilanne.
Oman poikkeuksen määrittely
Omat poikkeukset johdetaan tyypillisesti sisäänrakennetusta Exception-luokasta tai sen aliluokista. Näin voit määritellä oman poikkeuksen:
1234567891011class RegistrationError(Exception): """Base class for all registration-related exceptions.""" pass class UsernameTooShort(RegistrationError): """Raised when the username is too short.""" pass class PasswordTooWeak(RegistrationError): """Raised when the password is too weak.""" pass
Huom
Toivottavasti muistat periytymisen käsitteen oliopohjaisesta ohjelmoinnista 😉
Tässä on käytännön esimerkki siitä, miten mukautettuja poikkeuksia käytetään. Älä huoli esimerkin else- ja as-avainsanoista; käsittelemme ne seuraavassa luvussa.
123456789101112131415161718192021222324252627282930# Custom exceptions class RegistrationError(Exception): pass class UsernameTooShort(RegistrationError): pass class PasswordTooWeak(RegistrationError): pass # Functions to validate registration def validate_username(username): if len(username) < 6: raise UsernameTooShort("Username must be at least 6 characters long") def validate_password(password): if len(password) < 8: raise PasswordTooWeak("Password must be at least 8 characters long") def register_user(username, password): try: validate_username(username) validate_password(password) except RegistrationError as error: print(f"Registration failed: {error}") else: print("User registered successfully!") # Test the registration function register_user("john", "123") # This should fail
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 3.13
Poikkeusten Nostaminen Pythonissa: Virheiden Laukaiseminen ja Hallinta
Pyyhkäise näyttääksesi valikon
Poikkeukset Pythonissa tulisi nostaa osoittamaan, että virhetilanne on tapahtunut, mikä tekee funktion tai metodin aiotun tehtävän suorittamisesta mahdotonta. Tämä on erityisen hyödyllistä tilanteissa, joissa pelkkä None-arvon tai vastaavan palauttaminen voisi olla epäselvää eikä välttämättä ilmaise riittävästi, että virhe on tapahtunut.
Vakio-poikkeuksen nostaminen
Poikkeuksen nostamiseen Pythonissa käytetään raise-lauseketta. Tässä on yksinkertainen esimerkki:
123456789def calculate_age(birth_year): import datetime current_year = datetime.datetime.now().year age = current_year - birth_year if age < 0: raise ValueError("The birth year cannot be in the future") return age calculate_age(2034)
Tässä esimerkissä nostetaan ValueError, jos birth_year on suurempi kuin kuluvan vuoden arvo, mikä osoittaa, että annettu syntymävuosi on virheellinen.
Oman poikkeuksen luominen
Vaikka Pythonin sisäänrakennetut poikkeukset kattavat monia eri tilanteita, joskus voi olla tarpeen määritellä omia poikkeuksia, jotta voidaan selkeästi ilmaista tiettyyn sovellusalueeseen liittyvä virhetilanne.
Oman poikkeuksen määrittely
Omat poikkeukset johdetaan tyypillisesti sisäänrakennetusta Exception-luokasta tai sen aliluokista. Näin voit määritellä oman poikkeuksen:
1234567891011class RegistrationError(Exception): """Base class for all registration-related exceptions.""" pass class UsernameTooShort(RegistrationError): """Raised when the username is too short.""" pass class PasswordTooWeak(RegistrationError): """Raised when the password is too weak.""" pass
Huom
Toivottavasti muistat periytymisen käsitteen oliopohjaisesta ohjelmoinnista 😉
Tässä on käytännön esimerkki siitä, miten mukautettuja poikkeuksia käytetään. Älä huoli esimerkin else- ja as-avainsanoista; käsittelemme ne seuraavassa luvussa.
123456789101112131415161718192021222324252627282930# Custom exceptions class RegistrationError(Exception): pass class UsernameTooShort(RegistrationError): pass class PasswordTooWeak(RegistrationError): pass # Functions to validate registration def validate_username(username): if len(username) < 6: raise UsernameTooShort("Username must be at least 6 characters long") def validate_password(password): if len(password) < 8: raise PasswordTooWeak("Password must be at least 8 characters long") def register_user(username, password): try: validate_username(username) validate_password(password) except RegistrationError as error: print(f"Registration failed: {error}") else: print("User registered successfully!") # Test the registration function register_user("john", "123") # This should fail
Kiitos palautteestasi!