Python Exception Handling: Try, Catch, Slutligen

Innehållsförteckning:

Anonim

Vad är ett undantag i Python?

Ett undantag är ett fel som inträffar vid tidpunkten för genomförandet av ett program. Men när du kör ett program genererar Python ett undantag som bör hanteras för att undvika att ditt program kraschar. På Python-språk utlöses undantag automatiskt vid fel, eller så kan de utlösas och fångas upp av din kod.

Undantaget indikerar att även om händelsen kan inträffa så sker denna typ av händelser sällan. När metoden inte kan hantera undantaget kastas det till sin samtalsfunktion. Så småningom, när ett undantag kastas ut ur huvudfunktionen, avslutas programmet plötsligt.

I den här Python exceptionella hanteringshandledningen lär du dig:

  • Vad är ett undantag i Python?
  • Vanliga exempel på undantag
  • Varför ska du använda undantag?
  • Undantagsregler
  • Exceptionell hanteringsmekanism
    • Försök uttalandet
    • Fångstuttalandet
    • Raise-uttalandet
  • Viktiga Python-fel
  • Andra viktiga Python-undantag
  • Fel kontra undantag

Vanliga exempel på undantag:

  • Dividera med noll
  • Åtkomst till en fil som inte finns.
  • Tillägg av två oförenliga typer
  • Försöker komma åt ett icke-existerande index för en sekvens
  • Ta bort tabellen från den frånkopplade databasservern.
  • Uttag av bankomat på mer än det tillgängliga beloppet

Varför ska du använda undantag?

Här är anledningarna till att du använder undantag i Python:

  • Med undantagshantering kan du skilja felhanteringskod från normal kod.
  • Ett undantag är ett Python-objekt som representerar ett fel.
  • Som med kodkommentarer hjälper undantag dig att påminna dig själv om vad programmet förväntar sig.
  • Det klargör koden och förbättrar läsbarheten.
  • Låter dig stimulera konsekvenser eftersom felhanteringen sker på ett ställe och på ett sätt.
  • Ett undantag är en praktisk metod för hantering av felmeddelanden.
  • I Python kan du höja ett undantag i programmet genom att använda höjningsundantagsmetoden.
  • Att höja ett undantag hjälper dig att bryta den aktuella kodkörningen och returnerar undantaget till förväntan tills det hanteras.
  • Bearbetar undantag för komponenter som inte kan hantera dem direkt.

Undantagsregler

Här är några väsentliga regler för hantering av Python-undantag:

  • Undantag måste vara klassobjekt
  • För klassundantag kan du använda försöksuttalande med en undantagssats som nämner en viss klass.
  • Även om ett uttalande eller uttryck är syntaktiskt korrekt kan det visa ett fel när ett försök görs att utföra det.
  • Fel som hittades under körning kallas undantag och de är inte ovillkorligen dödliga.

Exceptionell hanteringsmekanism

Undantagshantering hanteras av följande 5 nyckelord:

  1. Prova
  2. fånga
  3. till sist
  4. kasta

Försök uttalandet

Ett försöksuttalande inkluderar nyckelordförsök följt av ett kolon (:) och en kodkod där undantag kan förekomma. Den har en eller flera klausuler.

Om inga undantag inträffade under körningen av försöksuttalandet ignorerar tolk undantagshanterarna för det specifika försöksuttalandet.

Om något undantag inträffar i en försökssvit, upphör försökspaketet och programkontrollen överförs till matchningen förutom hanteraren som följer försökssviten.

Syntax:try:statement(s)

Fångstuttalandet

Fångstblock tar ett argument i taget, vilket är den typ av undantag som det sannolikt kommer att fånga. Dessa argument kan sträcka sig från en specifik typ av undantag som kan varieras till en kategori med alla undantag.

Regler för fångstblock:

  • Du kan definiera ett fångstblock med hjälp av nyckelordet fångst
  • Catch Exception-parametern är alltid inom parentes
  • Det representerar alltid typen av undantag som fångar blockhandtag.
  • En undantagshanteringskod skrivs mellan två {} lockiga hakparenteser.
  • Du kan placera flera fångstblock i ett enda försöksblock.
  • Du kan använda ett fångstblock först efter försöksblocket.
  • Hela fångstblocket bör beställas från underklass till superklassundantag.

Exempel:

try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}

Slutligen blockera

Slutligen kör block alltid oavsett om ett undantag kastas eller inte. Det sista nyckelordet låter dig skapa ett kodblock som följer ett try-catch-block.

Slutligen är klausulen valfri. Det är avsett att definiera saneringsåtgärder som ska utföras under alla förhållanden.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Slutligen körs klausulen innan försöksuttrycket.

Raise-uttalandet

Höjningsuttalandet specificerar ett argument som initialiserar undantagsobjektet. Här följer ett komma undantagsnamnet och argumentet eller tupeln för argumentet som följer kommaet.

Syntax:

raise [Exception [, args [, traceback]]]

I denna syntax är argumentet valfritt, och vid tidpunkten för utförandet är argumentvärdet för undantag alltid inget.

Exempel:

Ett Python-undantag kan vara vilket värde som helst som en sträng, klass, nummer eller ett objekt. De flesta av dessa undantag som tas upp av Python-kärnan är klasser med ett argument som är en förekomst av klassen.

Viktiga Python-fel

Fel typ Beskrivning
AritmetikFel ArithmeticError fungerar som en basklass för alla aritmetiska undantag. Det tas upp för fel i aritmetiska operationer.
ImportError ImportError höjs när du försöker importera en modul som inte finns. Denna typ av undantag inträffar om du har gjort ett skrivfel i modulnamnet eller den modul som inte finns i standardvägen.
Indexfel En indexfel uppstod när du försöker hänvisa till en sekvens som är utanför intervallet.
KeyError När en viss nyckel inte finns i en ordlista tas ett undantag från KeyError upp.
NameError En NameError tas upp när ett namn hänvisas till i kod som aldrig finns i det lokala eller globala namnområdet.
ValueError Värdefel höjs när en funktion eller inbyggd operation får ett argument som kan vara av rätt typ men inte har ett lämpligt värde.
EOFel Denna typ av fel uppstår när en av de inbyggda funktionerna (input () eller raw_input () når ett EOF-tillstånd utan att läsa några data.
ZeroDivisonError Denna typ av fel uppstår när delning eller modul med noll sker för alla numeriska typer.
IOFel- Denna typ av fel uppstår när en in / ut-operation misslyckas.
syntaxfel SyntaxErrors tas upp när det finns ett fel i Python-syntaxen.
Indragningsfel Det här felet uppstod när indragningen inte är korrekt definierad

Andra viktiga Python-undantag

Undantag Beskrivning
Aritmetikundantag Aritmetiska fel, till exempel dividera med noll.
ArraylndexOutOfBoundsException Matrisindex är utanför gränserna.
ArrayStoreException Tilldelning hjälper dig att matriselementet av en inkompatibel typ.
ClassCastException Ogiltig roll
MlegalMonitorStateException Olaglig bildskärmsoperation, som att vänta på en olåst tråd.
MlegalStateException Miljön eller applikationen är i fel tillstånd.
ClassNotFoundException Klass hittades inte.
CloneNotSupportedException Försök att klona ett objekt som inte implementerar det klonabla gränssnittet.
Illegal AccessException Tillgång till en klass nekas.
InstantiationException Uppstår när du försöker skapa ett objekt från ett gränssnitt eller en abstrakt klass.
CloneNotSupportedException Försök att klona ett objekt som inte implementerar gränssnittet.

Fel kontra undantag

Fel Undantag
Alla fel i Python är den okontrollerade typen. Undantag inkluderar både markerad och okontrollerad typ.
Fel uppstår vid körningstid som är okända för kompilatorn. Undantag kan återställas genom att hantera dem med hjälp av try-catch block.
Fel orsakas oftast av den miljö där en applikation körs. Applikationen i sig orsakar undantag.
Exempel: OutofMemoryError Exempel: Kontrollerade undantag, SQL-undantag, NullPointerException, etc.

Sammanfattning

  • Ett undantag är ett fel som inträffade under genomförandet av ett program.
  • Undantaget indikerar att även om händelsen kan inträffa så sker denna typ av händelser sällan.
  • Vanliga exempel på undantag är 1) Uppdelning efter noll, 2) Åtkomst till en fil som inte finns, 3) Tillägg av två inkompatibla typer.
  • Ett undantag är ett Python-objekt som representerar ett fel.
  • Ett försöksuttalande inkluderar nyckelordförsök följt av ett kolon (:) och en kodkod där undantag kan förekomma. Den har en eller flera klausuler.
  • Fångstblock tar ett argument i taget, vilket är den typ av undantag som det sannolikt kommer att fånga.
  • Höjningsuttalandet specificerar ett argument som initialiserar undantagsobjektet.
  • Slutligen kör block alltid oavsett om ett undantag kastas eller inte.