c exception handling tutorial with code examples
Unntakshåndtering er en metode for å håndtere feil som kan oppstå under gjennomføring av et program. Denne opplæringen forklarer håndtering av unntak i C # med kodeeksempler:
hva er sikkerhetsnøkkel for trådløst nettverk
Unntakshåndtering brukes til å sikre at programflyten fortsetter selv om det er en kjøretidsfeil. Unntak er objektene som kastes mens det oppstår en kjøretidsfeil.
Hvis unntakene ikke håndteres, vil C # produsere en unntaksmelding og avslutte programmet, det er her unntaksbehandling kommer inn i bildet.
=> Les gjennom C # -guiden for nybegynnere her
Hva du vil lære:
- Hva er unntak?
- Nøkkelord for unntakshåndtering
- Unntakskurs i C #
- Unntakshåndtering i C #
- Konklusjon
- Anbefalt lesing
Hva er unntak?
Unntak er enestående feil som kan oppstå i programmet ditt under kjøretiden. Som regel kan programmerere enkelt oppdage noen av feilene som validering eller nullkontroll eller mens de verifiserer noen verdier.
Men det er visse tider når vi ikke kan forutse hva eller når en feil vil vises. For eksempel, la oss si at jeg leter etter en fil et sted. Programmet mitt vil gå helt fint til filen er tilstede, og hvis filen på en eller annen måte ble slettet, vil programmet kaste opp en feil.
Unntak forekommer ikke med jevne mellomrom, men kan fortsatt skje, og du vil alltid ønske å håndtere dem nøye. For å håndtere disse bruker vi unntakshåndtering.
Hver gang en feil oppstår, sier vi at den blir kastet, 'kastet' er et objekt fra System. Unntak klasse i C #. De System. Unntak klasse tilbyr forskjellige metoder og egenskaper som gir detaljer om feilen som nettopp programmet ditt har opplevd.
Som stabelsporegenskap som gir stabelen som problemet oppstod for, eller Meldingsegenskap som gir en beskrivelse av unntaket.
Nøkkelord for unntakshåndtering
Unntak tilbyr en prosess for å kontrollere en bestemt del av programmet, slik at selv om det er et unntak i den delen, så overføres programkontrollen til en annen del av programmet. I C # er unntakshåndtering i utgangspunktet bygget rundt fire nøkkelord: kaste, prøve, fange og til slutt .
kaste
Som vi allerede har diskutert er kast et objekt fra System. Unntak klasse i C #. Det lar programmet kaste en feil når den møter en.
prøve
Prøv å blokkere vedlegg koden som kan føre til at programmet kaster et unntak. Den følges av en eller flere fangstblokker.
implementere en prioritert kø i java
å fange
Når prøveblokk møter et unntak, gir det kontrollen til fangstblokken for å fange unntaket. Fangstblokken kan også inneholde et sett med koder som programmet trenger å utføre i tilfelle et unntak, eller det kan bare fange unntaket og ikke gjøre noe, avhengig av scenario og krav.
til slutt
Den siste blokken brukes til å utføre en bestemt kodebit eller instruksjon uavhengig av forekomsten av et unntak. Til slutt blir blokkeringen alltid utført, og den kan utføres like etter forsøksblokken hvis programmet ikke finner noe unntak, eller det kan utføres etter fangstblokken når programmet fanger et unntak.
Unntakskurs i C #
Alle unntakene i C # er avledet direkte eller indirekte fra System. Unntak klasse.
La oss ta en kort titt på noen av de vanligste unntakene:
- System.IO.IO Unntak: Den håndterer eventuelle inngangs- og utgangsrelaterte feil.
- System.DividedByZeroException: Håndterer feil kastet når et tall er delt med null.
- System.NullReferenceException : Håndterer eventuelle feil som kan oppstå når det refereres til et null-objekt.
- System.IndexOutOfRangeException: Håndterer feil som kastes når et program prøver å få tilgang til en indeks som er utenfor rekkevidden for matrisen.
- System.OutOfMemoryException: Håndterer feil kastet på grunn av utilstrekkelig minnetilstedeværelse.
Unntakshåndtering i C #
C # har en veldig veldefinert løsning for å håndtere alle typer unntak som kan oppstå ved å bruke prøve og fangst-blokken. Ved hjelp av denne blokken kan kjerneforklaringen til programmet skilles fra de andre utsagnene.
Eksempel:
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 eksemplet ovenfor har vi lagt ved koden vår for å åpne en fil under prøveblokken. Ettersom vi ikke har oppgitt noen gyldig filbane, bør koden kaste en feil. Nå har vi fått feilen i fangstblokken vår. Hvis filen ikke eksisterer i den gitte filbanen, vil koden kaste et FileNotFoundException.
Dette unntaket blir fanget av fangstblokken der vi allerede har definert det forventede unntaket. La oss forestille oss at hvis koden vår gir noe annet unntak enn det vi allerede har definert, vil ikke blokken vår kunne fange den. For å fange et generelt unntak, vil vi legge til en annen fangstblokk.
La oss ta en titt på den oppdaterte koden vår:
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(); } } }
Denne generiske fangstblokken vil kunne fange alle unntakene som kan kastes inne i prøveblokken. La oss nå legge til en endelig blokk for å fullføre dette. For å gjøre det enkelt, la oss bare skrive ut en melding ved å bruke endelig blokkering.
kan du lage en rekke objekter i java
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(); } } }
Her har vi nettopp lagt til den endelige blokken med en enkel melding. Du kan også legge til noen tilpassede uttalelser i blokken. Men den generelle strukturen til programmet vil forbli lik den som vises her.
Endelig-blokken vil alltid bli utført uansett om det er et unntak eller ikke. Programmet starter fra prøveblokken og vil deretter flytte direkte til den endelige blokken hvis det ikke er noen feil / unntak. Hvis den støter på et unntak, vil den flytte for å fange først og deretter utføre den siste blokken.
Er det en tilstand når den endelige blokken ikke vil bli utført?
Som navnet antyder, blir den siste blokken utført på slutten og er den siste blokken for koden som skal utføres. Endelig vil blokkeringen alltid kjøres når applikasjonen kjører. Den eneste gangen når endelig blokk ikke vil kjøres, er når applikasjonen krasjer eller med vilje blir drept ved hjelp av proseskommandoen.
Konklusjon
Hvis unntak ikke håndteres riktig, vil de forårsake feil inne i programmet. Hvis du ikke har brukt prøve- / fangstblokker noe sted i koden din, avbrytes programmet med en melding som viser unntaket. For en generisk bruker vil dette være veldig vanskelig å spore feilen tilbake til kildekoden og løse den.
Derfor er det alltid en god praksis å tilby unntakshåndtering i programmet ditt.
Eksempelkode
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 komplette C # Training Series her
Anbefalt lesing
- C # Funksjoner / Metoder Opplæring med kodeeksempler
- Python DateTime Tutorial med eksempler
- SVN Tutorial: Source Code Management Using Subversion
- C # String Tutorial - Strengmetoder med kodeeksempler
- Unntakshåndtering i C ++
- Tortoise SVN Tutorial: Revisions In Code Repository
- AWS CodeBuild Tutorial: Utpakking av kode fra Maven Build
- Hvordan håndtere unntak i SoapUI Groovy Scripts - SoapUI Tutorial # 11