Video: Section 7 2024
En strategi för hantering av undantag i Python är att ge specifika undantag för klausuler för alla kända undantag och generiska förutom klausuler för att hantera okända undantag. Kolla in undantagshierarkin som Python använder. När du tittar på det här diagrammet är BaseException det översta undantaget. De flesta undantagen härrör från undantag. När du arbetar med mattefel kan du använda den generiska ArithmeticError eller ett mer specifikt ZeroDivisionError-undantag.
Python utvärderar förutom klausuler i den ordning de visas i källkodsfilen. Den första klausulen granskas först, den andra klausulen granskas andra, och så vidare. Följande steg hjälper dig att undersöka ett exempel som visar vikten av att använda rätt undantagsorder. I det här fallet utför du uppgifter som resulterar i matematiska fel.
-
Öppna ett Python-filfönster.
Du ser en redigerare där du kan skriva exempelkoden.
-
Skriv följande kod i fönstret - tryck på Enter efter varje rad:
försök: Value1 = int (input ("Skriv första numret:")) Value2 = int (input Skriv in det andra numret: ")) Utgång = Värde1 / Värde2 utom ValueError: Skriv ut (" Du måste skriva ett heltal! ") Utom KeyboardInterrupt: print (" Du tryckte Ctrl + C! ") Utom ArithmeticError: print (" En odefinierad matte fel inträffade. ") utom ZeroDivisionError: print (" Försök att dela med noll! ") annat: print (Output)
Koden börjar med att få två ingångar: Value1 och Value2. De två första undantagsklausulerna hanterar oväntad inmatning. De andra två utom klausuler hanterar matematiska undantag, som att dividera med noll. Om allt går bra med applikationen, körs annars klausulen, vilket skriver ut resultatet av operationen.
-
Välj Kör → Kör modul.
Du ser ett Python Shell-fönster öppet. Ansökan ber dig skriva det första numret.
-
Skriv Hej och tryck på Enter.
Som förväntat visar Python ValueError-undantagsmeddelandet. Men det lönar sig alltid att kontrollera efter eventuella problem.
-
Välj Kör → Kör modul igen.
Du ser ett Python Shell-fönster öppet. Ansökan ber dig skriva det första numret.
-
Skriv 8 och tryck på Enter.
Ansökan ber dig ange det andra numret.
-
Skriv 0 och tryck på Enter.
Du ser felmeddelandet för undantaget ArithmeticError. Vad du egentligen bör se är undantaget ZeroDivisionError eftersom det är mer specifikt än undantaget ArithmeticError.
-
Omvänd ordningen för de två undantagen så att de ser så här ut:
förutom ZeroDivisionError: print ("Försök att dela med noll!") Utom ArithmeticError: print ("Ett odefinierat mattefel inträffade.") > Utför steg 5 till 7 igen.
-
Den här gången ser du undantagsmeddelandet ZeroDivisionError eftersom undantagen visas i rätt ordning.
Utför steg 5 till 7, men skriv 2 för det andra numret istället för 0.
-
Den här gången rapporterar programmet slutligen ett utgångsvärde på 4. 0.
Observera att utsignalen är en flytande punktvärde. Divisionen resulterar i ett flytande punktvärde om du inte anger att du vill ha ett heltalsprodukt genom att använda golvdelningsoperatören (//).