Python

Afhandeling van uitzonderingen in Python

Afhandeling van uitzonderingen in Python
Wanneer we een code uitvoeren die een fout bevat, wordt de fout weergegeven in de uitvoer door de uitvoering van het programma te stoppen. Sommige fouten worden mogelijk niet herkend door de gebruikers en creëren een ongewenste situatie voor hen. Maar als de fout in een begrijpelijk formaat voor de gebruikers kan worden weergegeven, is het voor hen gemakkelijk om de reden voor de fout te weten. In elke objectgeoriënteerde programmering, proberen te vangen of probeer-vang-eindelijk blok wordt gebruikt om fouten af ​​te handelen en ze weer te geven in een leesbaar formaat dat exception handling wordt genoemd. Hoe het afhandelen van uitzonderingen kan worden gedaan in het Python-script wordt getoond in deze tutorial.

Syntaxis :

proberen:
blok…
uitzondering Uitzondering:
afhandelaar…
anders:
blok…
Tenslotte:
blok…

Hier, als er een fout optreedt tijdens het uitvoeren van de instructies van proberen blok, dan wordt er een uitzondering gegenereerd en wordt de fout naar de overeenkomstige behalve afhandelaar. Meerdere fouten kunnen worden gegenereerd in een enkele proberen blok en dan moet je meerdere schrijven behalve afhandelaars.  De uitspraken van de anders blok wordt uitgevoerd als er geen fout optreedt in de proberen blok. De uitspraken van de Tenslotte blok wordt uitgevoerd als er een fout optreedt of niet optreedt. Voor het afhandelen van uitzonderingen, gebruikt u anders en Tenslotte blokken zijn niet essentieel. Verschillende soorten uitzonderingsbehandeling in python worden uitgelegd in het volgende deel van de tutorial.

Voorbeeld-1: Gebruik van een enkel try-behalve-blok om numerieke gegevens te valideren:

Dit voorbeeld toont het zeer eenvoudige gebruik van exception handling in Python. In de proberen blok, worden er twee invoer van de gebruiker genomen, één is een tekenreekswaarde en een andere is een numerieke waarde.  Als de gebruiker een tekenreekswaarde typt in plaats van een numerieke waarde voor de tweede invoer, wordt de WaardeFout uitzondering wordt gegenereerd door python3 en een aangepast foutbericht wordt weergegeven vanaf behalve blok.

#!/usr/bin/env python3
# Definieer het try-blok
proberen:
# Neem alle gegevens als een string
name = input("Vul uw naam in: \n")
# Neem numerieke gegevens
leeftijd = int(input("Vul uw leeftijd in: \n"))
# Druk de opgemaakte gegevens af met naam en leeftijd
print("Hallo %s, je bent %s jaar oud." %(naam leeftijd))
# invoerfouten afhandelen
behalve (Waardefout):
# Aangepaste foutmelding afdrukken
print("Verkeerde invoer! Je moet een nummer typen als je leeftijd.")

Uitgang:

Het script wordt twee keer uitgevoerd in de volgende uitvoer met de verkeerde invoer en de juiste invoer. De eerste keer, wanneer de gebruiker typt 'Eenendertig' als leeftijdswaarde voor de tweede invoer die een numerieke waarde heeft, dan a then WaardeFout wordt gegenereerd en het foutbericht wordt weergegeven vanuit het behalve blok. De tweede keer wordt er geen fout gegenereerd voor correcte invoerwaarden.

Voorbeeld-2: Gebruik van meerdere behalve blok om meerdere fouten af ​​te handelen:

Hoe u meerdere behalve blokken kunt gebruiken om meerdere fouten af ​​te handelen, wordt in dit voorbeeld getoond.  In dit script worden twee soorten fouten verwerkt. Een bestandsnaam wordt genomen als invoer van de gebruiker om te lezen. Als het bestand niet bestaat, zal het genereren een IOE-fout uitzondering en als het bestand bestaat maar leeg is, zal het een aangepaste uitzondering veroorzaken. Hiervoor worden in dit script twee behalve blokken gebruikt. Wanneer geen van de fouten optreedt, wordt de inhoud van het bestand weergegeven.

#!/usr/bin/env python3
# Importeer os-module
importeer os
# Definieer het try-blok
proberen:
# Neem de bestandsnaam als invoer
bestandsnaam = input('Voer een bestandsnaam in\n')
# Open het bestand om te lezen
file_handler = open(bestandsnaam)
# Stel de zoekfunctie in van 0 tot het einde van het bestand
file_handler.zoeken(0, os.SEEK_END)
# Lees de grootte van het bestand in bytes
grootte = file_handler.vertellen()
# Druk de bestandsinhoud en het aantal tekens van het bestand af
als (maat > 0):
# Zet de ponter op het begin van het bestand
file_handler.zoeken(0)
# Lees en bewaar de inhoud van het bestand in een variabele
file_content = file_handler.lezen()
print("\nDe inhoud van het onderstaande bestand\n")
print(file_content)
print("De grootte van het bestand is %d bytes" %size)
anders:
# Verhoog uitzondering als het bestand leeg is
raise Exception('Het bestand heeft geen inhoud.')
# Druk de foutmelding af als het bestand niet bestaat
behalve IOError als fout:
afdruk (fout)
# Druk de foutmelding af als het bestand leeg is
uitzondering Uitzondering als e:
print('Fout:%s' %e)
# Druk het bericht af als er geen fout is
anders:
print('Er treedt geen fout op')

Uitgang:

Het script wordt drie keer uitgevoerd. De eerste keer wordt een bestandsnaam gegeven die niet bestaat en de uitvoer toont een IOError-bericht. De tweede keer wordt een bestandsnaam gegeven die wel bestaat maar geen inhoud heeft en de uitvoer toont een aangepast bericht. De derde keer wordt een bestandsnaam gegeven die bestaat en tekst bevat. De uitvoer toont de inhoud van het bestand.

Voorbeeld-3: Gebruik van try-behalve-finally-blok om delingsfout af te handelen

Het voorbeeld toont het gebruik van een try-behalve-finally-blok om delingsfout af te handelen. Twee numerieke waarden worden als invoer genomen en de eerste invoer wordt gedeeld door de tweede invoer in het try-blok. Hier kunnen twee soorten fouten optreden. Een is WaardeFout wanneer de gebruiker een waarde zonder nummer typt en een andere is ZeroDivisionFout wanneer de gebruiker zal nemen 0 als tweede ingang.

#!/usr/bin/env python3
# Definieer het try-blok
proberen:
# Voer twee float-nummers in
n1 = float(input('Voer een getal in\n'))
n2 = float(input('Voer een getal in\n'))
# Deel deze getallen
deling = n1 / n2
# Fouten afhandelen
behalve (ZeroDivisionError, ValueError):
print("Gedeeld door nulfout of De waarde is geen getal")
# Bericht afdrukken als er geen fout optreedt
anders:
print("Het resultaat van de deling is %f" %division )
# Bericht afdrukken als er een fout optreedt of niet optreedt
Tenslotte:
print("Het einde")

Uitgang:

Hier wordt het script twee keer uitgevoerd met beide correcte invoer en met de tweede invoer als 0. Dus de tweede keer uitzondering wordt gegenereerd en geeft het foutbericht weer.

Conclusie:

Deze tutorial toont het basisproces voor het afhandelen van uitzonderingen in python3 voor de nieuwe python-gebruikers. De lezers zullen kunnen begrijpen wat het afhandelen van uitzonderingen is en hoe ze in python-script kunnen worden toegepast na het oefenen van de bovenstaande voorbeelden.

Google Search API gebruiken met Python
Het is geen nieuws dat Google de grootste zoekmachine ter wereld is. Veel mensen zullen een stap verder gaan om ervoor te zorgen dat hun inhoud hoog s...
Python Asyncio-zelfstudie
Asyncio-bibliotheek wordt geïntroduceerd in python 3.4 om gelijktijdige programma's met één thread uit te voeren. Deze bibliotheek is populairder dan ...
Gebruik python om een ​​bestand en map te zippen
Een gecomprimeerd bestand bevat veel bestanden, mappen en submappen. Er zijn veel toepassingen beschikbaar om een ​​gecomprimeerd bestand van een groo...