Innehållsförteckning:
- 1 Öppna ett Python-filfönster.
- 2Typ följande kod i fönstret - tryck på Enter efter varje rad:
- Du ser ett Python Shell-fönster öppet. Ansökan ber användaren att ange ett helt tal.
- Programmet visar ett felmeddelande och frågar om du vill försöka igen.
- Ansökan ber dig skriva in ett helt tal igen.
- Applikationen visar igen felmeddelandet och frågar om du vill försöka igen.
- 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.
- Du ser ett Python Shell-fönster öppet. Ansökan ber användaren att ange ett helt tal.
- 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.
Video: From C to Python by Ross Rheingans-Yoo 2024
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.
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.
3Välj kör → Körmodul.
Du ser ett Python Shell-fönster öppet. Ansökan ber användaren att ange ett helt tal.
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.
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.