Hem Personliga finanser Hur man hanterar kapslade undantag i Python

Hur man hanterar kapslade undantag i Python

Innehållsförteckning:

Video: From C to Python by Ross Rheingans-Yoo 2024

Video: From C to Python by Ross Rheingans-Yoo 2024
Anonim

Ibland måste du placera en undantagshanteringsrutin inom en annan i en process som heter nesting. När du hämtar undantagshanteringsrutiner försöker Python att hitta en undantagshanterare på den kapslade nivån först och flyttar sedan till de yttre lagren. Du kan inhämta exceptionella hanteringsrutiner så djupt som behövs för att göra din kod säker.

En av de vanligaste anledningarna till att använda ett dubbelt lager av undantagshanteringskod är när du vill hämta inmatningar från en användare och behöver placera inmatningskoden i en loop för att säkerställa att du faktiskt får den information som krävs. Följande steg visar hur den här typen av kod kan fungera.

1 Öppna ett Python-filfönster.

Du ser en redigerare där du kan skriva exempelkoden.

2Typ följande kod i fönstret - tryck på Enter efter varje rad:

TryAgain = True medan TryAgain: försök: Value = int (input ("Skriv ett helt tal.")) Utom ValueError: print måste skriva ett heltal!)) försök: DoOver = input ("Försök igen (y / n)?") utom: Skriv ut ("OK, se nästa gång!") TryAgain = Fel annars: om (str. DoOver) == "N"): TryAgain = False utom KeyboardInterrupt: print ("Du tryckte Ctrl + C!") Skriv ut ("Se dig nästa gång!") TryAgain = Fel annars: Skriv ut (Värde) TryAgain = False > Koden börjar genom att skapa en ingångsslinga. Att använda slingor för denna typ av syfte är faktiskt ganska vanligt i applikationer eftersom du inte vill att programmet ska avslutas varje gång ett inmatningsfel görs. Det här är en förenklad loop och normalt skapar du en separat funktion för att hålla koden.

När slingan startar, frågar applikationen användaren att skriva ett heltal. Det kan vara vilket heltal som helst. Om användaren skriver något icke-heltal eller trycker på Ctrl + C, Cmd + C eller en annan avbrytningsknappkombination, tar överenskommelsen om undantagshantering över. Annars skriver programmet ut det värde som användaren levererade och ställer TryAgain till False, vilket gör att slingan slutar.

Ett ValueError-undantag kan inträffa när användaren gör ett misstag. Eftersom du inte vet varför användaren skriver in felvärdet måste du fråga om användaren vill försöka igen. Naturligtvis kan man få ett annat undantag när man får mer inmatning från användaren. Den inre försöket … utom kodblock hanterar denna sekundära ingång.

Notera användningen av str. övre () funktionen när man får teckeninmatning från användaren. Denna funktion gör det möjligt att ta emot y eller Y som ingång och acceptera dem båda. När du frågar användaren för inmatning av tecken är det en bra idé att konvertera små bokstäver till stor bokstav så att du kan utföra en enda jämförelse (minska risken för fel).

KeyboardInterrupt-undantaget visar två meddelanden och avslutas automatiskt genom att ställa in TryAgain to False. KeyboardInterrupt uppstår endast när användaren trycker på en viss tangentkombination avsedd för att avsluta applikationen. Användaren är osannolikt att vill fortsätta använda applikationen vid denna tidpunkt.

3Välj kör → Körmodul.

Du ser ett Python Shell-fönster öppet. Ansökan ber användaren att ange ett helt tal.

4Type Hej och tryck på Enter.

Programmet visar ett felmeddelande och frågar om du vill försöka igen.

5Typ Y och tryck på Enter.

Ansökan ber dig skriva in ett helt tal igen.

6Type 5. 5 och tryck på Enter.

Applikationen visar igen felmeddelandet och frågar om du vill försöka igen.

7Tryck Ctrl + C, Cmd + C eller en annan tangentkombination för att avbryta programmet.

Ansökan slutar. Observera att meddelandet är det från det inre undantaget. Ansökan kommer aldrig till det yttre undantaget eftersom den inre undantagshanteraren ger generisk undantagshantering.

8Välj kör → Körmodul.

Du ser ett Python Shell-fönster öppet. Ansökan ber användaren att ange ett helt tal.

9Tryck Ctrl + C, Cmd + C eller en annan tangentkombination för att avbryta programmet.

Ansökan slutar. Observera att meddelandet är det från det yttre undantaget. I de ädla stegen slutar användaren applikationen genom att trycka på en avbrytningsnyckel. Applikationen använder emellertid två olika undantagshanterare för att lösa problemet.

Hur man hanterar kapslade undantag i Python

Redaktörens val

Hur man justerar inställningar för din bakgrund i Gamestar Mechanic - dummies

Hur man justerar inställningar för din bakgrund i Gamestar Mechanic - dummies

När du har lagt till en Bakgrund till ditt spel kan du ytterligare anpassa bakgrunden i Gamestar Mechanic genom att använda två ytterligare alternativ i dialogrutan Nivåinställningar: Bakgrundsrullning och Bakgrundsstil. Bakgrundsrullning Parallaxen är en viktig egenskap hos bakgrunden i spel där alternativet Fler skärm är valt. Redigerbar ...

Hur man balanserar svårigheten hos ett Gamestar Mechanic Game - dummies

Hur man balanserar svårigheten hos ett Gamestar Mechanic Game - dummies

Det vanligaste exemplet på balansering ett spel i Gamestar Mechanic balanserar svårigheten: Gör inte spelet så lätt att det är tråkigt och gör det inte så svårt att det är frustrerande. För att finjustera spelets svårighet måste du göra små förändringar utan att bli förbunden till ...

För att kalibrera accelerometern för ditt HTML5-spel - dummies

För att kalibrera accelerometern för ditt HTML5-spel - dummies

Som standard antar HTML5-spelaccelerometern Det neutrala läget är perfekt horisontellt - det vill säga enheten ligger platt på ett bord. Men det här är mobila enheter, och spelare vill ofta ha det neutrala stället att vara någon annanstans. Grundläggande tekniken för att kalibrera tiltkontrollen är att hålla koll på en ...

Redaktörens val

Gör äta rena förändringar i livet - dummies

Gör äta rena förändringar i livet - dummies

Rena ätförändringar i ditt liv är inte svåra att göra, men de tar lite gumption, uthållighet och övning. När du gör en koncentrerad insats för att äta lägre på livsmedelskedjan, märka hur detta beslut påverkar andra delar av ditt liv. För att vara framgångsrik måste du tänka på mat och äta annorlunda, vilka ...

Köttfri måndag och hållbarhet - dummies

Köttfri måndag och hållbarhet - dummies

Köttfri måndag är ett ganska nytt koncept som ofta nämns på Facebook och Twitter. Allt det betyder är att en dag i veckan väljer du att äta vegetarian eller vegan. Inte bara kan Meatless Monday spara pengar (eftersom kött är dyrt), men planen hjälper miljön (eftersom stora kött-, fläsk- och kycklingsanläggningar skapar nitrat ...

5 Hälsofördelar Kopplade till Medelhavsdiet - dummies

5 Hälsofördelar Kopplade till Medelhavsdiet - dummies

Medelhavsdieten har länge varit prydnad för vilket ger hälsoeffekter, såsom att minska kranskärlssjukdom och minska risken för vissa cancerformer. Inklusive färska grönsaker och frukter, baljväxter och hälsosamma fetter i din kost kan hjälpa dig att förbättra din hälsa på många sätt. Forskning visar att en traditionell medelhavsdiet minskar ...

Redaktörens val

Hur man arbetar med Nikon D3300-minneskort - dummies

Hur man arbetar med Nikon D3300-minneskort - dummies

Som mediet som lagrar dina bildfiler , Nikon D3300s minneskort är en viktig del av din kamera. Följ dessa tips för att köpa och behålla kort: Köpkort: När du handlar för ett SD-minneskort är den enda specifikationen som noterar annat än kortkapaciteten kort hastighet, vilket indikerar hur snabbt data ...

Timerfotografering: Nikon D5200-dummies med Nikon D5200

Timerfotografering: Nikon D5200-dummies med Nikon D5200

Med intervall Timer Fotografering på Nikon D5200, du kan ställa in kameran för att automatiskt släppa avtryckaren med intervall som sträcker sig från sekunder till timmar från varandra. Med den här funktionen kan du fånga upp ett ämne eftersom det förändras över tiden - en teknik som är känd som fotografering med tidsfördröjning - utan att behöva stå runt på ...

JPEG Filer på Nikon D3300-dummies

JPEG Filer på Nikon D3300-dummies

Uttalad "jay-peg", det här formatet är standardinställningen på din Nikon D3300, som det är på de flesta digitalkameror. JPEG är populär av två huvudorsaker: Omedelbar användbarhet: Alla webbläsare och e-postprogram kan visa JPEG-filer, så att du kan dela bilder online direkt efter att du har tagit dem. Du kan också få en ...