Du skriver kode som ser riktig ut, kjører den, og Python gir deg en rød feilmelding. Det skjer alle. Men i stedet for å gjette hva som gikk galt, kan du lære å lese feilmeldingene og bruke dem til å fikse koden raskere.
De vanligste feiltypene i Python
Python har spesifikke feiltyper som forteller deg nøyaktig hva som gikk galt. Her er de du møter oftest:
SyntaxError oppstår når Python ikke forstår det du har skrevet. Et manglende kolon etter en if-setning, en parentes som ikke er lukket, eller en ugyldig variabelnavn. Python peker på linjen der feilen er, men den faktiske årsaken kan være linjen over.
NameError betyr at du bruker et navn Python ikke kjenner. Det skjer typisk når du har en skrivefeil i et variabelnavn, eller prøver å bruke en variabel før den er opprettet:
b = 10
print(a) gir NameError: name 'a' is not defined
TypeError dukker opp når du bruker feil type. For eksempel når du prøver å legge til et tall i en streng, eller gir en funksjon feil type argument:
[1, 2, 3].extend(4) gir TypeError fordi extend() forventer en samling, ikke et enkelt tall.
IndexError betyr at du prøver å hente et element som ikke finnes. Har du en liste med tre elementer og ber om indeks 5, får du denne feilen.
ValueError oppstår når verdien har riktig type, men feil innhold. int("hei") gir ValueError fordi Python ikke kan gjøre teksten "hei" om til et tall.
KeyError betyr at du leter etter en nøkkel som ikke finnes i en dictionary. {"a": 1, "b": 2}[1] gir KeyError fordi 1 ikke er en nøkkel (nøklene er "a" og "b").
AttributeError oppstår når du prøver å bruke en egenskap eller metode som ikke finnes på objektet. "hello".name gir AttributeError fordi strenger ikke har en name-attributt.
Slik leser du en feilmelding
Python viser feilmeldinger som en traceback. Les den nedenfra og opp. Den siste linjen forteller deg hva feilen er. Linjene over viser deg hvor i koden feilen oppstod, med filnavn og linjenummer.
Mange nybegynnere ignorerer traceback og prøver å gjette seg frem. Det er som å ignorere GPS-en og kjøre på magefølelse. Les feilmeldingen, den peker deg nesten alltid i riktig retning.
Løft egne feil med raise
Du kan også lage dine egne feilmeldinger med raise. Det er nyttig når du skriver funksjoner som forventer bestemt input:
x = -1
if x < 0:
raise Exception("Ingen tall under null")
Koden stopper og viser feilmeldingen din. Du kan også bruke spesifikke feiltyper:
if not isinstance(x, str):
raise TypeError("Bare strenger er tillatt")
Ved å bruke riktig feiltype gjør du det lettere for andre (og deg selv) å forstå hva som gikk galt.
Forskjellen mellom feiltyper og feilhåndtering
Å kjenne feiltypene handler om å lese og forstå feilmeldinger. Feilhåndtering med try og except handler om å fange feil slik at programmet ikke krasjer. De to hører sammen: du må vite hvilken feil du ser før du kan håndtere den riktig.
Et vanlig mønster er å bruke if-sjekker for å forhindre feil der du kan, og try/except for å håndtere feil du ikke kan forutse (som brukerinput eller nettverksproblemer).
Tips for raskere feilsøking
Les hele feilmeldingen, ikke bare typen. "TypeError: unsupported operand type(s) for +: 'int' and 'str'" forteller deg ikke bare at det er en typefeil, men nøyaktig hvilke typer som kolliderer og hvilken operasjon som feilet.
Bruk print() for å sjekke verdier underveis. Legg inn print(type(x)) før linjen som feiler. Ofte er variabelen en annen type enn du tror.
Sjekk variabelnavn nøye. NameError skyldes nesten alltid en skrivefeil. Python skiller mellom store og små bokstaver: Name og name er to forskjellige variabler.
Den fullstendige listen over feiltyper i Python finner du i Pythons offisielle dokumentasjon.
Vil du lære feilhåndtering i praksis med videoer og oppgaver? Python for nybegynnere tar deg gjennom vanlige feil, raise, try/except og feilsøkingsteknikker steg for steg.



