Python

Obravnava izjem v Pythonu

Obravnava izjem v Pythonu
Ko zaženemo katero koli kodo, ki vsebuje napako, se napaka prikaže v izhodu tako, da ustavi izvajanje programa. Uporabniki nekaterih napak morda ne bodo prepoznali in jim bodo ustvarili neželene situacije. Če pa je napako mogoče uporabnikom prikazati v razumljivi obliki, potem zlahka vedo, zakaj je napaka. V katerem koli objektno usmerjenem programiranju, poskusite ujeti ali poskusite-ulov-končno block se uporablja za obdelavo napak in njihovo prikazovanje v berljivi obliki, ki se imenuje obravnava izjem. Kako je mogoče ravnati z izjemami v skriptu Python, je prikazano v tej vadnici.

Sintaksa:

poskusite:
blokiraj ..
razen izjeme:
vodnik…
sicer:
blokiraj ..
končno:
blokiraj ..

Tu pride do napake med izvajanjem stavkov poskusite blok, potem se ustvari izjema in napaka vrne v ustrezen razen vodnik. V enem lahko ustvarite več napak poskusite blok in potem morate napisati več razen vodniki.  Izjave drugače blok bo izveden, če v datoteki poskusite blok. Izjave končno blok se izvede, če pride do napake ali ne. Za obravnavo izjem uporabite drugače in končno bloki niso bistveni. Različne vrste ravnanja z izjemami v pythonu so razložene v naslednjem delu vadnice.

Primer-1: Uporaba enega samega poskusnega bloka za preverjanje številskih podatkov:

Ta primer prikazuje zelo preprosto uporabo obravnave izjem v Pythonu. V poskusite blok, uporabnik bo vzel dva vhoda, eden je vrednost niza, drugi pa številska vrednost.  Če uporabnik vstavi katero koli vrednostno vrednost namesto številske vrednosti za drugi vnos, se ValueError izjemo bo ustvaril python3 in bo prikazano sporočilo o napaki po meri razen blok.

#!/ usr / bin / env python3
# Določite poskusni blok
poskusite:
# Vse podatke jemlji kot niz
name = input ("Vnesite svoje ime: \ n")
# Vzemite poljubne številčne podatke
starost = int (vnos ("Vnesite starost: \ n"))
# Natisnite formatirane podatke z imenom in starostjo
print ("Pozdravljeni% s, stari ste% s let."% (ime, starost))
# obravnava napake pri vnosu
razen (ValueError):
# Natisnite sporočilo o napaki po meri
print ("Napačen vnos! Številko morate vnesti kot svojo starost.")

Izhod:

Skript se izvede dvakrat v naslednjem izhodu z napačnim vnosom in pravilnim vnosom. Prvič, ko uporabniški tip 'Enaintrideset' kot starostna vrednost za drugi vhod, ki ima številsko vrednost, nato pa a ValueError in sporočilo o napaki se prikaže iz bloka razen. Drugič se napaka ne prikaže za pravilne vhodne vrednosti.

Primer-2: Uporaba multiple razen bloka za obdelavo več napak:

V tem primeru je prikazano, kako lahko za obdelavo več napak uporabite več, razen bloka.  V tem skriptu bodo obravnavane dve vrsti napak. Uporabniško ime za branje vzame ime datoteke. Če datoteka ne obstaja, se bo ustvarila napaka IOErr Če datoteka obstaja, vendar je prazna, bo sprožila izjemo po meri. Za to sta v tem skriptu uporabljena dva, razen blokov. Ko se nobena napaka ne pojavi, bo prikazana vsebina datoteke.

#!/ usr / bin / env python3
# Uvozi os modul
uvoz os
# Določite poskusni blok
poskusite:
# Vzemite ime datoteke kot vhod
filename = input ('Vnesite ime datoteke \ n')
# Odprite datoteko za branje
file_handler = odprto (ime datoteke)
# Nastavite iskalni kazalnik od 0 do konca datoteke
file_handler.iskati (0, os.SEEK_END)
# Preberite velikost datoteke v bajtih
velikost = rokovalnik_datoteke.povej ()
# Natisnite vsebino datoteke in število znakov datoteke
če (velikost> 0):
# Nastavite ponter na začetek datoteke
file_handler.iskati (0)
# Preberite in shranite vsebino datoteke v spremenljivko
file_content = file_handler.preberi ()
print ("\ nVsebina spodaj navedene datoteke \ n")
natisni (vsebina_datoteke)
print ("Velikost datoteke je% d bajtov"% velikosti)
sicer:
# Povečajte izjemo, če je datoteka prazna
raise Exception ('Datoteka nima vsebine.')
# Natisnite sporočilo o napaki, če datoteka ne obstaja
razen IOError kot napaka:
tiskanje (napaka)
# Natisnite sporočilo o napaki, če je datoteka prazna
razen izjeme kot e:
print ('Napaka:% s'% e)
# Natisnite sporočilo, če ni napake
sicer:
print ('Ne pride do napake')

Izhod:

Skript se izvede trikrat. Prvič je podano ime datoteke, ki ne obstaja, in na izhodu se prikaže sporočilo IOError. Drugič je podano ime datoteke, ki obstaja, vendar nima vsebine, in rezultat prikaže sporočilo po meri. Tretjič je podano ime datoteke, ki obstaja in vsebuje besedilo. Rezultat prikazuje vsebino datoteke.

Primer 3: Uporaba bloka try-osim-final za obdelavo napake pri deljenju

Primer prikazuje uporabo poskusnega poskusa razen na koncu bloka za obdelavo napake pri deljenju. Kot vhod se bosta upoštevali dve številski vrednosti, ki bosta prvi vhod delili z drugim vnosom v poskusnem bloku. Tu se lahko pojavita dve vrsti napak. Eno je ValueError ko bo uporabnik vpisal katero koli vrednost brez številke, druga pa ZeroDivisionError kdaj bo uporabnik vzel 0 kot drugi vhod.

#!/ usr / bin / env python3
# Določite poskusni blok
poskusite:
# Vnesite dve plavajoči številki
n1 = float (vnos ('Vnesite številko \ n'))
n2 = float (vnos ('Vnesite številko \ n'))
# Razdelite te številke
delitev = n1 / n2
# Obravnavajte napake
razen (ZeroDivisionError, ValueError):
print ("Razdeljeno na nič napake ali Vrednost ni število")
# Natisnite sporočilo, če ne pride do napake
sicer:
print ("Rezultat delitve je% f"% delitve)
# Natisnite sporočilo, če pride do napake ali ne
končno:
print ("Konec")

Izhod:

Tu se skript dvakrat zažene z obema pravilnima vhodoma in z drugim vhodom kot 0. Torej se generira druga izjema in prikaže sporočilo o napaki.

Zaključek:

Ta vadnica prikazuje osnovni postopek ravnanja z izjemami v python3 za nove uporabnike pythona. Bralci bodo lahko razumeli, kaj je ravnanje z izjemami in kako se prijaviti v skriptu python po vadbi zgornjih primerov.

Kako razviti igro na Linuxu
Pred desetletjem le malo uporabnikov Linuxa napoveduje, da bo njihov najljubši operacijski sistem nekoč priljubljena igralna platforma za komercialne ...
Odprtokodna vrata komercialnih igralnih sistemov
Brezplačne, odprtokodne in medplatformacijske igre, ki jih lahko uporabite za igranje starih, pa tudi nekaterih dokaj nedavnih naslovov iger. V tem čl...
Najboljše igre ukazne vrstice za Linux
Ukazna vrstica ni le vaš največji zaveznik pri uporabi Linuxa - lahko je tudi vir zabave, saj jo lahko uporabljate za igranje številnih zabavnih iger,...