hur man bäst använder försök utom i Python-speciellt för nybörjare
i Python-programmering tillåter undantagshantering en programmerare att aktivera flödeskontroll. Och det har ingen. av inbyggda undantag för att fånga fel om din kod bryts. Att använda try-except är det vanligaste och naturliga sättet att hantera oväntade fel tillsammans med många fler undantagshanteringskonstruktioner. I den här handledningen får du utforska några av de bästa teknikerna för att använda try-utom i Python.
felhantering eller undantagshantering i Python kan verkställas genom att ställa in undantag. Med hjälp av ett försöksblock kan du implementera ett undantag och hantera felet i ett utomblock. När koden går sönder i ett försöksblock kommer det vanliga kodflödet att stanna och kontrollen kommer att bytas till utomblocket för hantering av felet.
Läs också-lär dig Python Undantagshantering från början.
Varför använda try-Except / Try-Except-else-klausulen? Med hjälp av try-except och try-except-else kan du undvika många okända problem som kan uppstå från din kod. Till exempel kan Python-koden med lbyl (Look before you leap) – stil leda till tävlingsförhållanden. Här kan Try-utom-klausulen komma för att rädda dig. Det finns också fall där din kod beror kritiskt på viss information som kan bli föråldrad till den tid du får den. Till exempel, koden som ringer till os.väg.existerar eller kö.full kan misslyckas eftersom dessa funktioner kan returnera data som blir inaktuella när du använder den. Det klokare valet här skulle vara att följa try-except-else-stilen i din kod för att hantera ovanstående fall mer tillförlitligt.
att höja undantag är också tillåtet i Python. Det betyder att du kan kasta eller höja ett undantag när det behövs. Du kan göra det helt enkelt genom att ringa från din kod. När det höjts kommer undantaget att stoppa den aktuella körningen som vanligt och kommer att gå längre upp i samtalstacken tills den hanteras.
Varför använda undantag? De hjälper inte bara till att lösa populära problem som rasförhållanden utan är också mycket användbara för att kontrollera fel i områden som loopar, filhantering, databaskommunikation, nätverksåtkomst och så vidare.
därför kommer vi att täcka bredare problem och tillhandahålla lösningar i det här inlägget. Observera att undantagshantering är en konst som ger dig enorma krafter för att skriva robust och kvalitetskod. Så, brace att läsa några grundtankar om undantag tillsammans med de bästa sätten att hantera dem.
måste läsa-allt du borde veta om Python Copy File .
Python: Tips för att använda Try-Except, Try-Except-Else och More
- hur man hanterar ett godtyckligt undantag
- fånga flera undantag i ett utom block
- hantera flera undantag med ett utom block
- re-raising undantag i Python
- när du ska använda else-klausulen
- använd
- använd as-nyckelordet för att fånga specifika Undantagstyper
- bästa praxis för att manuellt höja undantag
- så här hoppar du igenom fel och fortsätter körning
- vanligaste undantagsfel i Python
- exempel på de vanligaste undantagen i Python
1. Hur man hanterar ett godtyckligt undantag
Ibland kan du behöva ett sätt att tillåta godtyckligt undantag och vill också kunna visa fel-eller undantagsmeddelandet.
det är lätt att uppnå med Python-undantagen. Kontrollera koden nedan. När du testar kan du placera koden i try-blocket i exemplet nedan.
try: #your codeexcept Exception as ex: print(ex)
tillbaka till toppen
2. Fånga flera undantag i ett utom block
Du kan fånga flera undantag i ett enda utom block. Se exemplet nedan.
except (Exception1, Exception2) as e: pass
Observera att du kan skilja undantagen från variabeln med ett komma som är tillämpligt i Python 2.6/2.7. Men du kan inte göra det i Python 3. Så du bör föredra att använda nyckelordet.
tillbaka till toppen
3. Hantera flera undantag med ett utom block
det finns många sätt att hantera flera undantag. Den första av dem kräver att alla undantag som sannolikt kommer att uppstå i form av en tupel. Se nedan.
try: file = open('input-file', 'open mode')except (IOError, EOFError) as e: print("Testing multiple exceptions. {}".format(e.args))
nästa metod är att hantera varje undantag i ett dedikerat utomblock. Du kan lägga till så många utom block som behövs. Se exemplet nedan.
try: file = open('input-file', 'open mode')except EOFError as ex: print("Caught the EOF error.") raise exexcept IOError as e: print("Caught the I/O error.") raise ex
det sista men inte minst är att använda undantaget utan att nämna något undantagsattribut.
try: file = open('input-file', 'open mode')except: # In case of any unhandled error, throw it away raise
den här metoden kan vara användbar om du inte har någon aning om undantaget som eventuellt kastas av ditt program.
tillbaka till toppen
4. Re-raising undantag i Python
undantag när upphöjda Hålla flytta upp till anropsmetoder tills hanteras. Även om du kan lägga till en utom klausul som bara kan ha ett samtal utan argument. Det kommer att resultera i reraising undantaget.
se exempelkoden nedan.
try: # Intentionally raise an exception. raise Exception('I learn Python!')except: print("Entered in except.") # Re-raise the exception. raise
utgång:
Entered in except.Traceback (most recent call last): File "python", line 3, in <module>Exception: I learn Python!
tillbaka till toppen
5. När du ska använda else-klausulen
använd en else-klausul direkt efter try-utom-blocket. Else-klausulen kommer bara att träffas om inget undantag kastas. Else-uttalandet bör alltid föregå de utom block.
i else blocks kan du lägga till kod som du vill köra när inga fel uppstod.
se exemplet nedan. I det här provet kan du se en stundslinga som går oändligt. Koden ber om användarinmatning och analyserar den sedan med den inbyggda funktionen. Om användaren anger ett nollvärde kommer det utom blocket att träffas. Annars kommer koden att strömma genom else-blocket.
while True: # Enter integer value from the console. x = int(input()) # Divide 1 by x to test error cases try: result = 1 / x except: print("Error case") exit(0) else: print("Pass case") exit(1)
tillbaka till toppen
6. Utnyttja
Om du har en kod som du vill köra i alla situationer, sedan skriva det inuti . Python kommer alltid att köra instruktionerna kodade i . Det är det vanligaste sättet att städa upp uppgifter. Du kan också se till att städningen kommer igenom.
ett fel fångas av TRY-klausulen. Efter koden i utom blocket blir exekveras, instruktionerna i skulle köra.
Observera att a alltid kommer att köras, även om du har återvänt före det.
se exemplet nedan.
try: # Intentionally raise an error. x = 1 / 0except: # Except clause: print("Error occurred")finally: # Finally clause: print("The is hit")
utgång:
Error occurredThe is hit
tillbaka till toppen
7. Använd as-nyckelordet för att fånga specifika undantagstyper
med hjälp av as <identifierare> kan du skapa ett nytt objekt. Och du kan också undantagsobjektet. Här, exemplet nedan, skapar vi IOError-objektet och använder det sedan i klausulen.
try: # Intentionally raise an error. f = open("no-file")except IOError as err: # Creating IOError instance for book keeping. print("Error:", err) print("Code:", err.errno)
utgång:
('Error:', IOError(2, 'No such file or directory'))('Code:', 2)
tillbaka till toppen
8. Bästa praxis för att manuellt höja undantag
Undvik att höja generiska undantag, för om du gör det måste alla andra mer specifika undantag också fångas. Därför är den bästa praxisen att ta upp det mest specifika undantaget nära ditt problem.
dåligt exempel.
def bad_exception(): try: raise ValueError('Intentional - do not want this to get caught') raise Exception('Exception to be handled') except Exception as error: print('Inside the except block: ' + repr(error)) bad_exception()
utgång:
Inside the except block: ValueError('Intentional - do not want this to get caught',)
bästa praxis:
här tar vi upp en specifik typ av undantag, inte en generisk. Och vi använder också args-alternativet för att skriva ut felaktiga argument om det finns några. Låt oss se exemplet nedan.
try: raise ValueError('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four') except ValueError as err: print(err.args)
utgång:
('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four')
tillbaka till toppen
9. Så här hoppar du igenom fel och fortsätter körning
helst bör du inte göra det här. Men om du fortfarande vill göra, följ sedan nedanstående kod för att kolla in rätt tillvägagångssätt.
try: assert Falseexcept AssertionError: passprint('Welcome to Prometheus!!!')
utgång:
Welcome to Prometheus!!!
tillbaka till toppen
nu, ta en titt på några av de vanligaste Python undantag och deras exempel.
vanligaste undantagsfel
- IOError-det uppstår på fel som en fil misslyckas med att öppna.
- ImportError-om en python-modul inte kan laddas eller lokaliseras.
- ValueError-det uppstår om en funktion får ett argument av rätt typ men ett olämpligt värde.
- KeyboardInterrupt-det träffas när användaren går in i avbrottsknappen (dvs. Control-C eller DEL – tangenten)
- EOFError-det höjs om ingångsfunktionerna (input()/raw_input()) träffar ett end-of-file-tillstånd (EOF) men utan att läsa några data.
tillbaka till toppen
exempel på de vanligaste undantagen
except IOError:print('Error occurred while opening the file.')except ValueError:print('Non-numeric input detected.')except ImportError:print('Unable to locate the module.')except EOFError:print('Identified EOF error.')except KeyboardInterrupt:print('Wrong keyboard input.')except:print('An error occurred.')
tillbaka till toppen
sammanfattning – hur man bäst använder försök-utom i Python
under programmering är fel bundna att hända. Det är ett faktum som ingen kan ignorera. Och det kan finnas många orsaker till fel som dålig användarinmatning, otillräcklig filbehörighet, otillgänglighet av en nätverksresurs, otillräckligt minne eller sannolikt programmerarens misstag.
hur som helst, allt detta kan hanteras om din kod använder undantagshantering och implementerar den med konstruktioner som try-except, eller tr-except-else, try-except-finally. Hoppas, du skulle ha haft glädje av att läsa ovanstående handledning.
om du gillade inlägget, vänligen missa inte att dela den med vänner och på sociala medier (facebook/twitter).
bästa,
TechBeamers.