Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Poikkeusten Nostaminen Pythonissa: Virheiden Laukaiseminen ja Hallinta | Mastering Error Handling in Python
Pythonin Rakenteellinen Ohjelmointi

bookPoikkeusten 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:

123456789
def 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)
copy

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:

1234567891011
class 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
copy

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
copy
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookPoikkeusten 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:

123456789
def 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)
copy

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:

1234567891011
class 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
copy

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
copy
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
some-alt