c exception handling tutorial with code examples
Undantagshantering är en metod för att hantera fel som kan uppstå under genomförandet av ett program. Denna handledning förklarar undantagshantering i C # med kodexempel:
soapui intervju frågor och svar pdf
Undantagshantering används för att säkerställa att programflödet fortsätter även om det finns ett runtime-fel. Undantag är objekten som kastas när de stöter på något körfel.
Om undantagen inte hanteras kommer C # att producera ett undantagsmeddelande och avsluta programmet, det är här undantagshantering kommer in i bilden.
=> Läs igenom C # -guiden för nybörjare här
Vad du kommer att lära dig:
- Vad är undantag?
- Nyckelord för undantagshantering
- Undantagskurser närvarande i C #
- Undantagshantering i C #
- Slutsats
- Rekommenderad läsning
Vad är undantag?
Undantag är oöverträffade fel som kan uppstå i ditt program under körning. För det mesta kan programmerare enkelt upptäcka några av felen som validering eller nollkontroll eller medan de verifierar vissa värden.
Men det finns vissa tillfällen då vi inte kan förutse vad eller när ett fel kommer att visas. Till exempel, låt oss säga att jag letar efter en fil på en plats. Mitt program kommer att fungera perfekt tills filen finns och om filen på något sätt raderas kommer mitt program att kasta upp ett fel.
Undantag förekommer inte regelbundet men kan ändå hända och du vill alltid hantera dem noggrant. För att hantera dessa använder vi undantagshantering.
oracle intervju frågor och svar för erfarna
Närhelst ett fel inträffar säger vi att det kastas, 'kastat' är ett objekt från System. Undantag klass i C #. De System. Undantag class erbjuder olika metoder och egenskaper som ger information om det fel som ditt program just stött på.
Som stacktrace-egenskap som tillhandahåller stacken för vilken problemet uppstod eller Message-egenskap som ger en beskrivning av undantaget.
Nyckelord för undantagshantering
Undantag erbjuder en process för att styra en viss del av programmet så att även om det finns ett undantag i den delen så överförs programstyrningen till en annan del av programmet. I C # är undantagshantering i princip uppbyggd kring fyra nyckelord: kasta, försök, fånga och slutligen .
kasta
Som vi redan har diskuterat är kast ett objekt från System. Undantag klass i C #. Det låter programmet kasta ett fel när det stöter på ett.
Prova
Försök blockerar omsluter blocket av koden som kan få programmet att göra ett undantag. Det följs av ett eller flera fångstblock.
fånga
När försöksblock möter ett undantag, ger det kontrollen till fångsten för att fånga undantaget. Fångstblocket kan också innehålla en uppsättning koder som programmet behöver utföra i händelse av ett undantag eller så kan det bara fånga undantaget och göra ingenting beroende på scenario och krav.
till sist
Det sista blocket används för att utföra ett visst kodavsnitt eller instruktion oavsett förekomsten av ett undantag. Slutligen körs alltid blocket, och det kan köras strax efter försöksblocket om programmet inte hittar något undantag eller det kan köras efter fångstblocket när programmet fångar ett undantag.
Undantagskurser närvarande i C #
Alla undantag i C # härleds direkt eller indirekt från System. Undantag klass.
Låt oss ta en kort titt på några av de vanligaste undantagen:
- System.IO.IOException: Den hanterar eventuella in- och utdata relaterade fel.
- System.DividedByZeroException: Hanterar fel som kastas när ett tal divideras med noll.
- System.NullReferenceException : Hanterar alla fel som kan uppstå när ett null-objekt refereras.
- System.IndexOutOfRangeException: Hanterar fel som kastas när ett program försöker komma åt ett index som är utanför räckvidden för arrayen.
- System.OutOfMemoryException: Hanterar fel på grund av otillräcklig minnesnärvaro.
Undantagshantering i C #
C # har en mycket väldefinierad lösning för hantering av alla typer av undantag som kan uppstå med hjälp av försök och fångstblock. Med hjälp av detta block kan programmets kärnuttal skiljas från de andra uttalandena.
Exempel:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
I exemplet ovan har vi bifogat vår kod för att öppna en fil under försöksblocket. Eftersom vi inte har gett någon giltig filsök bör koden orsaka ett fel. Nu har vi fångat felet i vårt fångstblock. Om filen inte finns i den angivna filvägen, kommer koden att kasta ett FileNotFoundException.
Detta undantag kommer att fångas av fångsten där vi redan har definierat det förväntade undantaget. Låt oss föreställa oss om vår kod ger något annat undantag än det som vi redan har definierat, så kommer vårt block inte att kunna fånga det. För att fånga ett generiskt undantag lägger vi till ytterligare ett fångstblock.
Låt oss ta en titt på vår uppdaterade kod:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Detta generiska fångstblock kommer att kunna fånga alla undantag som kan kastas inuti försöksblocket. Nu ska vi också lägga till ett slutligt block för att slutföra detta. För att göra det enkelt, låt oss bara skriva ut ett meddelande med det slutliga blocket.
sap bo intervju frågor och svar pdf
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Här har vi precis lagt till det slutliga blocket med ett enkelt meddelande. Du kan också lägga till några anpassade uttalanden i blocket. Men programmets övergripande struktur kommer att förbli lik den som visas här.
Slutligen blockeras alltid, oavsett om det finns ett undantag eller inte. Programmet startar från försöksblocket och flyttar sedan direkt till det slutliga blocket om det inte finns några fel / undantag. Om det stöter på ett undantag kommer det att gå för att fånga först och sedan utföra det sista blocket.
Finns det ett villkor när det slutliga blocket inte kommer att utföras?
Som namnet antyder körs det slutliga blocket i slutet och är det sista blocket för koden som kommer att köras. Slutligen kommer block alltid att köras när programmet körs. Den enda gången när blocket slutligen inte körs är när applikationen kraschar eller avsiktligt dödas med hjälp av processkommandot.
Slutsats
Om undantag inte hanteras ordentligt kommer de att orsaka fel i ditt program. Om du inte har använt försök / fångstblock någonstans inuti din kod avbryts programmet med ett meddelande som visar undantaget. För en generisk användare blir det mycket svårt att spåra felet tillbaka till källkoden och lösa det.
Därför är det alltid bra att tillhandahålla undantagshantering i ditt program.
Exempelkod
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string[] args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Se vår kompletta C # träningsserie här
Rekommenderad läsning
- C # -funktioner / metodhandledning med kodexempel
- Python DateTime-handledning med exempel
- SVN-handledning: Källkodshantering med subversion
- C # Stränghandledning - Strängmetoder med kodexempel
- Undantagshantering i C ++
- Tortoise SVN Tutorial: Revisions In Code Repository
- AWS CodeBuild Tutorial: Extrahera kod från Maven Build
- Hur man hanterar undantag i SoapUI Groovy Scripts - SoapUI-handledning # 11