Tavs šīs stundas izaicinājums: Paredzēt lietotāja kļūdas, izstrādāt drošu ievades sistēmu un novērst programmas avārijas, izmantojot koda atkļūdošanas un validācijas metodes.
2.4.10. Veic programmas atkļūdošanu un testēšanu.Programmēšanā negaidītas kļūdas sauc par Exceptions (Izņēmumiem). Tā vietā, lai ļautu programmai "uzkārties", mēs šīs kļūdas pārtveram un apstrādājam.
try blokā rodas kļūda.# Īss kļūdu apstrādes paraugs
try:
vecums = int(input("Cik Tev gadu? "))
print(f"Tev ir {vecums} gadi.")
except ValueError:
print("Kļūda! Lūdzu, ievadi tikai ciparus.")
Ievies pamata kļūdu apstrādi, lai novērstu programmas aizvēršanos nepareizas ievades dēļ.
drosiba.py.try: bloku un iekšpusē pieprasi lietotāja vecumu, ietinot to int() funkcijā.try bloka (bez atkāpes) pievieno except ValueError: bloku.except bloka izvadi ziņojumu: "Kļūda! Lūdzu, izmanto tikai ciparus.".Apvieno While loop (Kamēr ciklu) ar kļūdu ķeršanu, lai pieprasītu ievadi, līdz tā ir derīga.
validacija.py.while True: ciklu.try/except ValueError bloku struktūru.break jāliek try bloka beigās.except blokā izvadi brīdinājumu un ļauj ciklam dabiski atkārtoties.Izmanto kombinētu validāciju – gan datu tipa pārbaudi, gan loģiskos ierobežojumus (lielāks/mazāks).
asp_validacija.py.while True un try/except struktūru, lai iegūtu "Žetonu skaitu" (int) un "Likmi" (float).break komandu, pievieno loģisko pārbaudi (if): likme nedrīkst būt lielāka par pieejamajiem žetoniem un nedrīkst būt negatīvs skaitlis.continue, lai atkārtotu ievades pieprasījumu.Izveido navigācijas sistēmu, kas iztur gan nepareizus datu tipus, gan skaitļus ārpus atļautajām robežām.
izvelne.py.try/except ValueError, lai neļautu programmai sabrukt, ja tiek ievadīts teksts.if/elif/else), lai izpildītu atšķirīgas darbības atkarībā no izvēlētā skaitļa.else, lai paziņotu, ja ievadīts skaitlis, kas nav 1, 2 vai 3. Pārtrauc ciklu tikai izvēles "3" gadījumā.except: bez norādīta kļūdas tipa, jo tas noķers pilnīgi visas kļūdas, pat tās, kas saistītas ar paša koda sintakses problēmām vai programmas piespiedu apturēšanu (Ctrl+C).
# Slikti:
except:
print("Notika kļūda.")
# Labi:
except ValueError:
print("Datu tipa kļūda.")
try liec tikai tās rindiņas, kas reāli var izraisīt norādīto kļūdu.
# Slikti:
try:
vards = input("Vārds: ") # Šeit ValueError nevar notikt
vecums = int(input("Vecums: "))
except ValueError:
print("Kļūda!")
# Labi:
vards = input("Vārds: ")
try:
vecums = int(input("Vecums: "))
except ValueError:
print("Kļūda!")
try/except bezgalīgajā ciklā, aizmirsīsi pielikt break veiksmīgas izpildes gadījumā, cikls turpināsies mūžīgi.while True:
try:
likme = float(input("Ievadi likmi: "))
# Validācijas loģika
if likme <= 0:
print("Likmei jābūt pozitīvai!")
continue # Sākam no jauna
# Ja viss ir pareizi, izejam no cikla
break
except ValueError:
print("Kļūda! Ievadi skaitli, izmantojot punktu (piem., 5.5).")
print(f"Likme {likme} pieņemta!")