Start | try except
 

try ... except



Låt säga att du vill hämta in data från användaren. Du vill hämta ett tal (flyttal).
s = input() t = float(s) print("Du skrev in talet", t)
Sålänge användaren verkligen matar in ett tal så är alla glada och nöjda. Men vad händer om användaren matar in "Kalle" ?

Vi får körningsfel! Du måste klicka på koden och öppna kodeditorn för att se vilket körningsfel du får. Om du inte orkar, så avslöjar jag att du får följande fel:

Traceback (most recent call last):
  File , line 2, in 
TypeError: could not convert string to float: 'Kalle'

Ett sätt att hantera detta är faktiskt med try ... except. Så istället för att självsäkert utgå ifrån att användaren verkligen matar in ett tal, så kör vi istället attityden att vi försöker fråga efter ett tal men förbereder oss på ett misslyckande.
s = input() try: t = float(s) print("Du skrev in talet", t) except: print("Du skrev inget tal, men jag överlever!")
Så vi kan göra en loop och insistera att användaren verkligen skriver in ett tal.
tal_inmatat = False text = "Skriv in ett tal" while(not tal_inmatat): s = input(text) try: t = float(s) print("Du skrev in talet", t) tal_inmatat = True except: text = "Du skrev inget tal, försök igen!" print("Tack för att du matatde in ett tal!")

raise

Motsatsen till try ... except, där vi hanterar ett fel, är raise. Vi kan framkalla ett Error i vårt program.
x = "340" if not type(x) is int: raise TypeError("GO ELLER! Bara int tillåtet!")

Lite frågor

Vad är poängen med try .. except
  Fånga upp fel som kan inträffa och slussa koden till ett stycke som hanterar felet
  Att man slipper skriva bra kod, man kan basically köra except på allt som kan gå fel


12.638092041016 ms