Innehållsförteckning
När ett undantag uppstår är det vår plikt att kunna hantera det, på så sätt kommer vårt program att kunna utföra en åtgärd, lyfta ett meddelande, begära korrigering av den parameter som användaren har angett, kort sagt många möjligheter .Fånga undantag
Som vi nämnde tidigare är det viktiga med när vi ser ett undantag att kunna fånga det på det här sättet vi kan bestämma vad programmet ska göra när denna situation inträffar, för att göra detta kommer vi att använda kommandona försök / utom. För att demonstrera ovanstående kommer vi att analysera ett mycket enkelt divisionsprogram, eftersom vi vet att vi inte kan dela ett tal med 0 så kommer detta att medföra ett undantag.
Låt oss börja bygga vår kod, kom ihåg att vi kan göra detta i vilken textredigerare som helst och vi måste spara filen med ett .py -tillägg så att vi kan köra den på vår kommandorad eller konsol.
x = input ('Ange det första numret:') y = input ('Ange det andra talet:') skriv ut x / y [ / size] [size = 4]
Detta kommer att fungera riktigt tills användaren anger värdet 0 som det andra argumentet, detta kommer att leda till ett undantag som vi kan se i följande bild av körningen av detta program:
Vi kan förhindra detta genom att använda försök / utom som vi hade sett i början av detta avsnitt, låt oss se vår korrigerade kod:
försök: x = input ('Ange det första numret:') y = input ('Ange det andra talet:') skriv ut x / y utom ZeroDivisionerror: print "Det andra talet kan inte vara noll!"
Detta sätt att hantera detta är ganska rent, trots allt kan man också säga det med en enkel om som skulle förutsätta att värdet av Y Det skulle inte vara 0 skulle vara en adekvat lösning, men om vi lade till fler divisioner i vårt program skulle vi behöva fler villkor, istället på detta sätt behöver vi bara en enda hanterare av det möjliga undantaget som genereras.
Fånga mer än ett undantag
Fortsätt med exemplet på divisionen som vi har arbetat med, låt oss se vad som skulle hända om vi i stället för en 0 anger något annat:
På bilden kan vi se att en text har matats in och vår hanterare som bara förväntade sig ett undantag från typen ZeroDivisionerror kunde inte göra korrekt hantering eftersom den inte visste vad han skulle göra med det nya genererade undantaget.
För att fånga det nya undantaget kommer vi helt enkelt att lägga till ett nytt block bortsett från för att kunna hantera undantaget Skrivfel som genereras genom att dela ett tal med en text.
Låt oss se vår korrigerade kod:
försök: x = input ('Ange det första numret:') y = input ('Ange det andra talet:') skriv ut x / y utom ZeroDivisionerror: print "Det andra talet kan inte vara noll!" förutom TypeError: print "Det var väl inte ett nummer?"
Om vi hade valt att använda villkor om, den här uppgif.webpten skulle ha tagit oss många fler kodrader, förutom att göra vårt program mindre läsbart.
Fånga två undantag i samma block
Om det vi behöver är att fånga flera undantag i ett enda block bortsett från vad vi måste göra är att lägga till dem i deklarationen i en parentes, låt oss se koden för att förstå den bättre:
[ / storlek] försök: x = input ('Ange det första numret:') y = input ('Ange det andra talet:') skriv ut x / y utom ZeroDivisionerror: print "Det andra talet kan inte vara noll!" förutom TypeError: [/ size] [size = 4] print "Det var väl inte ett nummer?"
Som vi kunde se, vad som än händer, kommer applikationen att fortsätta att skicka samma meddelande till oss om en 0 är inmatad eller något annat än ett nummer anges.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng