Python Raise ValueError: Python Python: Täydellinen opas esimerkkeineen

joulukuu 30, 2025

Pythonissa poikkeukset tarjoavat jäsennellyn tavan käsitellä virheitä ja odottamattomia tilanteita. Sisäänrakennettujen poikkeusten joukossa on muun muassa, ValueError on yksi yleisimmistä virheistä. Se syntyy, kun funktio tai operaatio vastaanottaa argumentin, jonka tyyppi on oikea, mutta arvo on virheellinen.

Tämä eroaa TypeError, joka ilmenee, kun argumentin tyyppi on täysin väärä. Esimerkiksi:

  • Merkkijonon välittäminen funktiolle, joka odottaa kokonaislukua, aiheuttaa TypeError.
  • Jos negatiivinen luku syötetään funktiolle, joka vaatii positiivisen kokonaisluvun, syntyy ValueError.

ValueError perii suoraan Poikkeus Pythonin poikkeushierarkiassa, ja sisäänrakennetut funktiot laukaisevat sen yleensä automaattisesti esimerkiksi seuraavissa tilanteissa:

  • int("abc") — yritys muuntaa ei-numeroinen merkkijono kokonaisluvuksi.
  • float("nan") tietyissä tilanteissa tai virheellisissä muunnoksissa.
  • Tällaisten epäsuhtojen selvittäminen, kuten a, b = [1].

Manuaalinen nostaminen ValueError on suositeltava käytäntö syötteen validointiin ja alueiden rajoitusten noudattamisen varmistamiseen.

Milloin ValueError-virhe tulisi heittää Pythonissa

Korota ValueError nimenomaisesti silloin, kun:

  • Syötetyyppi on oikea, mutta arvo on semanttisesti virheellinen.
  • Sinun on varmistettava, että liiketoimintasäännöt tai matemaattiset rajoitukset (esim. ei-negatiiviset luvut, sallitut arvoalueet) noudatetaan.
  • Haluat ilmaista, että arvo ei kuulu odotettuun määrittelyalueeseen.

ValueError-virheen aiheuttamisen syntaksi Pythonissa

Perussyntaksi on yksinkertainen:

python
raise ValueError("Kirjoita tähän kuvaava virheilmoitus")

Voit jättää viestin pois (aiheuttaa ValueError-virheen), mutta selkeän ja täsmällisen viestin lisääminen on erittäin suositeltavaa ylläpidettävyyden ja virheiden etsimisen kannalta.

Käytännön esimerkkejä Pythonista: ValueError-virheen aiheuttaminen

1. Positiivisen kokonaisluvun oikeellisuuden tarkistaminen
python
def set_temperature(temp):
    if not isinstance(temp, (int, float)):
    raise TypeError("Lämpötilan on oltava luku")
    if temp < -273.15:
 raise ValueError(f"Absoluuttisen nollapisteen alapuolella oleva lämpötila on virheellinen: {temp}")

set_temperature(-300)  # Aiheuttaa ValueError-virheen
2. Nollasta poikkeavan syötteen varmistaminen neliöjuuren laskemisessa
python
import math

def safe_square_root(value):
    if value < 0:
    raise ValueError(f"Negatiivisen luvun neliöjuurta ei voi laskea: {value}")
    return math.sqrt(value)

safe_square_root(-9)  # Aiheuttaa ValueError-virheen
3. Virheellisten enum-tyyppisten arvojen estäminen
python
def set_status(status):
    valid_statuses = {"active", "inactive", "pending"}
    if status not in valid_statuses:
    raise ValueError(f"Virheellinen tila: {status}. Täytyy olla jokin {valid_statuses}:n joukosta")

set_status("banned")  # Aiheuttaa ValueError-virheen
4. Mukautettu jäsennely ja validointi
python
def parse_percentage(percentage_str):
    try:
    value = float(percentage_str.rstrip("%"))
    except ValueError:
 raise ValueError(f"Ei voitu muuntaa '{percentage_str}' numeroksi")
    if not 0 <= value <= 100:
        raise ValueError(f"Prosenttiosuuden on oltava välillä 0–100: saatu arvo {value}") 
 
 return value / 100

parse_percentage("150%")  # Aiheuttaa ValueError-virheen
5. Uudelleenkäsittely lisäkontekstin avulla

Kun käärit toisen operaation, voit säilyttää alkuperäisen virheen poikkeusten ketjuttamisen avulla:

python
def convert_to_int(input_str):
    try:
 return int(input_str)
    except ValueError as exc:
 raise ValueError(f"Virheellinen kokonaislukumuoto: '{input_str}'") from exc
6. ValueError-virheen käsittely
python
try:
    set_temperature(-500)
except ValueError as e:
    print(f"Validointivirhe: {e}")
# Tulostus: Validointivirhe: Absoluuttisen nollapisteen alapuolella oleva lämpötila ei ole sallittu: -500

Pythonin ValueError-virheen käsittelyn parhaat käytännöt

  1. Valitse oikea poikkeus
    Käytä ValueError vain kelvollisille tyypeille, joiden arvot eivät ole kelvollisia. Varaus TypeError tyyppien yhteensopimattomuuksien varalta.
  2. Kirjoita informatiivisia viestejä
    Ilmoita todellinen saatu arvo ja odotettu rajoitus. Tämä helpottaa huomattavasti virheiden etsimistä.
  3. Tarkista varhaisessa vaiheessa
    Tarkista syötteet funktioiden alussa, jotta virheet havaitaan nopeasti ja vältetään tarpeettomia laskutoimituksia.
  4. Vältä laaja-alaisten poikkeusten käsittelyä
    Saalis ValueError nimenomaan sen sijaan, että pelkkä paitsi: tai paitsi poikkeus: mikäli mahdollista.

Johtopäätös

Kasvatus ValueError Asianmukainen koodaus on puhtaan ja puolustavan Python-ohjelmoinnin tunnusmerkki. Kohdassa Carmatec, meidän Python-kehitys Tiimimme noudattaa näitä parhaita käytäntöjä luodakseen ennustettavia, luotettavia ja ylläpidettäviä sovelluksia. Tarkistamalla syötteet jo varhaisessa vaiheessa ja antamalla selkeitä, ymmärrettäviä virheilmoituksia varmistamme, että ratkaisujamme on helpompi korjata, skaalata ja laajentaa ajan myötä.

Tämä järjestelmällinen lähestymistapa poikkeusten käsittelyyn parantaa koodin laatua, vähentää tuotantovirheitä ja vahvistaa järjestelmän vakautta pitkällä aikavälillä. Kun palkata Python-kehittäjiä Carmatecilta, työskentelet insinöörien kanssa, jotka soveltavat todistetusti toimivaa validointilogiikkaa ja alan standardien mukaisia ohjelmointikäytäntöjä luodakseen vakaita, yrityskäyttöön soveltuvia Python-sovelluksia.