Što je pogreška?
U programskim jezicima, ako neki kod izvršimo na pogrešan način, izvršavanje programa će biti zaustavljeno porukom i ta se poruka naziva pogreška ili iznimka. Postoje određene vrste pogrešaka u programskom jeziku zbog različitih razloga. Neki od njih su sljedeći:
AssertionError:
Ova vrsta pogreške pojavljuje se kada uvjeti tvrdnji ili izjave ne uspiju u kodu.
ImportError:
Ova greška se javlja kada uvozimo neki modul u datoteku i ako taj modul ne postoji.
IndexError:
To se događa kada je indeks bilo koje sekvence izvan raspona.
KeyError:
Ova se pogreška pojavljuje u Pythonu kada ne možemo pronaći nijedan ključ u rječniku.
NameError:
Ova se pogreška može pojaviti kada ne pronađemo nijednu varijablu u lokalnom ili globalnom opsegu.
RuntimeError:
Ova će se pogreška pojaviti kada se pogreška ne može kategorizirati ni u jednu vrstu.
IndentationError:
Kada koristimo pogrešno uvlačenje u Python kodu, tada će se pojaviti IndentationError.
SystemError:
Kada postoji interna pogreška, prevoditelj će pokrenuti SystemError.
UnicodeError:
Kada postoji pogreška kodiranja ili dekodiranja povezana s Unicodeom i UnicodeError će se pojaviti.
ValueError:
Kada u funkciji proslijeđujemo točan argument prema tipu podataka, ali vrijednost nije ispravna, tada se pogreška koja se dogodila naziva ValueError.
sunčano diol doba
ZeroDivisionError:
Kao što znamo, u matematici nijedan broj ne možemo podijeliti s nulom jer rezultat teži beskonačnosti. Dakle, ako smo napisali bilo kakvu izjavu u vezi dijeljenja s nulom ili modulo s nulom, tada će prikazana pogreška biti ZeroDivisionError.
EOFError:
Kada upotrijebimo funkciju input() za dobivanje unosa iz datoteke i dođemo do kraja datoteke, tada će se pojaviti ova pogreška da bi se pokazalo da smo došli do kraja datoteke i sada ne možemo preuzeti ništa unos iz datoteke.
Ovaj je članak uglavnom posvećen AttributeError.
Što je AttributeError?
Ova se pogreška pojavljuje u programu kada postoji pogreška uvjetovanja u dodjeli atributa. Na primjer, ako cjelobrojnoj varijabli dodijelimo neku vrijednost i ako pokušamo upotrijebiti bilo koju funkciju niza iz te varijable, tada će to izazvati AttributeError.
Možemo razumjeti razlog za AttributeError u Pythonu pomoću sljedećih primjera:
Primjer 1:
Kada primijenimo funkciju na drugu vrstu podataka što nije moguće
a=15 a.append('javatpoint')
Izlaz:
Obrazloženje:
U gornjem kodu imamo jednu cjelobrojnu varijablu i inicijalizirali smo je s vrijednošću 15. Sada, ako koristimo funkciju dodavanja na varijabli a, tada će dati AttributeError, što kaže da ne postoji atribut kao dodatak u integer tipu podataka.
Primjer2:
Postoje šanse za AttributeError u krivom pravopisu atributa.
string = 'you will learn each coding tutorial from '.fst('Javatpoint') print(string)
Izlaz:
Obrazloženje:
U gornjem kodu imamo atribut niza i primjenjujemo atribut fst, tako da će biti AttributeError da ovaj atribut ne postoji za varijablu.
Primjer3:
Možemo dobiti AttributeError ako pokušamo napraviti krivu referencu za bilo koju varijablu klase.
class Javatpoint(): def __init__(self): self.var1 = 'This is for JavatPoint' obj = Javatpoint() print(obj.var1) print(obj.var2)
Izlaz:
Obrazloženje:
U gornjem kodu imamo klasu, a tu je i varijabla imena var1. Kreiramo objekt klase i greškom referenciramo pogrešnu varijablu var2 te klase koja čak i ne postoji, tako da će sigurno biti AttributeError.
Rješenje za rješavanje pogreške ili iznimke:
U Pythonu ili u bilo kojem programskom jeziku, možemo koristiti rukovanje iznimkama ili pogreškama pomoću naredbi try i osim.
Primjer 4:
class Javatpoint(): def __init__(self): self.var1 = 'This is for javatpoint' obj = Javatpoint() try: print(obj.var1) print(obj.var2) except AttributeError: print('There is no such attribute')
Izlaz:
Obrazloženje:
U gornjem kodu imamo klasu i varijablu pod nazivom var1. U naredbi try pokušavamo referencirati var1 i var2. Moći ćemo dereferencirati var1 i ispisat ćemo izjavu za to, ali ćemo dobiti AttributeError za referenciranje var2. Dakle, program će ići u blok osim, a mi ćemo ispisati izjavu koja je napisana samo za stanje greške.