Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.
Python except Exception, e:
(Varför ville du skriva koden om du inte visste vad den gjorde? )
Handling exceptions [Python-manualen] visar `try`/`except`-syntaxen. I `try`-blocket kör du kod, och ifall den "höjer" ett undantag under körning så kan du "fånga" det med `except` och då köra detta block. Ett undantag som inte fångas avbryter programkörningen med en "traceback", som du säkert sett under dina tester.
Just `Exception` är en basklass som alla undantag "ska" ärva ifrån (alla inbyggda gör det, om du skriver egna undantag så är det ditt ansvar, i någon mån). I ditt kodexempel så betyder det i praktiken att alla undantag fångas. Det undantag som fångats ges sedan variabelnamnet `e` i `except`-blocket. Skriver du ut `e` med exempelvis `print(e)` så får du helt enkelt texten tillhörande undantaget:
>>> try:
... print(finns_ej)
... except NameError as e:
... print('Fel: {}'.format(e))
...
Fel: name 'finns_ej' is not defined
Ovan så visar jag hur man fångar ett explicit namngivet undantag: det ska man i praktiken alltid göra (ett eller flera, men inte "wildcard", så att säga). Det är ytterst dålig praxis att fånga "allt", för då är det väldigt lätt att man döljer oväntade fel och gör felsökning till en ren pärs. Om man inte vet vilka undantag man vill fånga så har man gjort något fel.
`pass` är en "no-op", dvs ett "statement" som inte gör någonting. Det måste stå något för att inte Pythontolken ska klaga på att det inte finns något indenterat blockinnehåll i ditt exempel, men det gör alltså "ingenting".
Sammantaget så fångar din kod alltså alla undantag som ärvt från `Exception` (vilket bör vara just alla undantag) och gör ingenting med dem, utan låter koden fortsätta utan avbrott. Detta gör att alla undantag som höjs av koden i motsvarande `try`-block bara kastas bort. Värdelös praxis, gör aldrig så, men det kanske bara var i pedagogiskt syfte .
(Varför ville du skriva koden om du inte visste vad den gjorde? )
Handling exceptions [Python-manualen] visar `try`/`except`-syntaxen. I `try`-blocket kör du kod, och ifall den "höjer" ett undantag under körning så kan du "fånga" det med `except` och då köra detta block. Ett undantag som inte fångas avbryter programkörningen med en "traceback", som du säkert sett under dina tester.
Just `Exception` är en basklass som alla undantag "ska" ärva ifrån (alla inbyggda gör det, om du skriver egna undantag så är det ditt ansvar, i någon mån). I ditt kodexempel så betyder det i praktiken att alla undantag fångas. Det undantag som fångats ges sedan variabelnamnet `e` i `except`-blocket. Skriver du ut `e` med exempelvis `print(e)` så får du helt enkelt texten tillhörande undantaget:
>>> try:
... print(finns_ej)
... except NameError as e:
... print('Fel: {}'.format(e))
...
Fel: name 'finns_ej' is not defined
Ovan så visar jag hur man fångar ett explicit namngivet undantag: det ska man i praktiken alltid göra (ett eller flera, men inte "wildcard", så att säga). Det är ytterst dålig praxis att fånga "allt", för då är det väldigt lätt att man döljer oväntade fel och gör felsökning till en ren pärs. Om man inte vet vilka undantag man vill fånga så har man gjort något fel.
`pass` är en "no-op", dvs ett "statement" som inte gör någonting. Det måste stå något för att inte Pythontolken ska klaga på att det inte finns något indenterat blockinnehåll i ditt exempel, men det gör alltså "ingenting".
Sammantaget så fångar din kod alltså alla undantag som ärvt från `Exception` (vilket bör vara just alla undantag) och gör ingenting med dem, utan låter koden fortsätta utan avbrott. Detta gör att alla undantag som höjs av koden i motsvarande `try`-block bara kastas bort. Värdelös praxis, gör aldrig så, men det kanske bara var i pedagogiskt syfte .
(efter exit(0) så behövdes en except eller finally, och eftersom jag inte riktigt vet vad jag gör så hamnade jag här )
Grymt förklarat, indenteringen vart lite offside, men den är rätt i programmet!
EDIT: Japp, pedagogiskt syfte!
- Idag Nu stiger hårddiskpriserna med uppemot 10 procent 3
- Idag Analytiker: Apple har överskattat intresset för Vision Pro 37
- Igår AMD, Nvidia och Intel – vad är det för skillnad mellan grafikkortstillverkarna? 21
- Igår Testpilot: MSI MPG 271QRX - Färgsprakande OLED i 360 Hz 13
- 23 / 4 Meta öppnar upp Quests OS – vill bli VR-världens Android 12
- Systembolaget varnar: Dryckesbrist efter hackerattack90
- Tips på datorbygge med en 5700G8
- Nu stiger hårddiskpriserna med uppemot 10 procent3
- Microsoft rullar ut Startmenyreklam till alla45
- Webhallen config, kan inte hitta 2 st sata diskar 3,556
- Datorn startade om vid installation av drivrutin2
- Premier League säsong 2023/202426
- En simpel fråga om hur mycket lönehöjning man får varje år15
- Tråden för hörlursgalningar! Lurar, förstärkare, dacs, pads osv osv It´s all here!19830
- Sparkcykel barn - klarar den regn?6
- Säljes 2 set med Corsair 16GB (2x8GB) DDR4 3600MHz CL18 Vengeance LPX AMD
- Köpes 5800x3d / 5700x3d
- Säljes iMac Pro 2017
- Köpes Köpes AM4 moderkort + Minnen.
- Säljes GeForce RTX 2070 ROG STRIX 8GB
- Säljes RETRO: GeForce 8800 GTS
- Säljes Server - 2x Xeon gold 6138 - 256GB RAM - Nvidia P2000
- Säljes Ryzen 9 3950x Mobo 64gb ram!
- Säljes ASUS TUF F17 - i7 | 16GB | 1TB | RTX 4060
- Säljes ASUS 27" ROG Swift PG27AQDM OLED QHD 240 Hz
- Nu stiger hårddiskpriserna med uppemot 10 procent3
- Quiz: Vad kan du om Inet?39
- Analytiker: Apple har överskattat intresset för Vision Pro37
- Microsoft rullar ut Startmenyreklam till alla45
- EU röstar igenom ”rätten att reparera”50
- Viaplay sätter ner foten mot delade konton54
- AMD, Nvidia och Intel – vad är det för skillnad mellan grafikkortstillverkarna?21
- Systembolaget varnar: Dryckesbrist efter hackerattack90
- Veckans fråga: Hur mycket lagringsutrymme har din dator?93
- Valve täpper till kryphål i Steam-återbetalningar19