I Java, unntak er en uønsket eller uventet hendelse, som oppstår under kjøringen av et program, dvs. under kjøretid, som forstyrrer den normale flyten av programmets instruksjoner.
I Java er det to typer unntak:
- Sjekket unntak
- Ukontrollerte unntak
hva er dimensjonene på dataskjermen min
Sjekket unntak i Java
Disse er unntakene som kontrolleres ved kompilering. Hvis en kode i en metode gir et sjekket unntak, må metoden enten håndtere unntaket eller den må spesifisere unntaket ved å bruke kaster nøkkelord . I sjekkede unntak er det to typer: fullstendig sjekkede og delvis sjekkede unntak. Et fullstendig sjekket unntak er et avkrysset unntak der alle barneklassene også er sjekket, som IOException og InterruptedException. Et delvis sjekket unntak er et avkrysset unntak der noen av barneklassene ikke er merket av, som et unntak.
Tenk for eksempel på følgende Java-program som åpner filen på plassering C: esta.txt og skriver ut de tre første linjene i den. Programmet kompilerer ikke, fordi funksjonen main() bruker FileReader(), og FileReader() kaster et sjekket unntak FileNotFoundException . Den bruker også metodene readLine() og close(), og disse metodene gir også sjekket unntak IOException
Eksempel:
Java
// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException occurred> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Reading file from path in local directory> > FileReader file => new> FileReader(> 'C: esta.txt'> );> > // Creating object as one of ways of taking input> > BufferedReader fileInput => new> BufferedReader(file);> > // Printing first 3 lines of file 'C: esta.txt'> > for> (> int> counter => 0> ; counter <> 3> ; counter++)> > System.out.println(fileInput.readLine());> > // Closing file connections> > // using close() method> > fileInput.close();> > }> }> |
>
regexp_like i mysql
>
Produksjon:
For å fikse programmet ovenfor, må vi enten spesifisere en liste over unntak ved å bruke kast, eller vi må bruke en try-catch-blokk. Vi har brukt kast i programmet nedenfor. Siden FileNotFoundException er en underklasse av IOException , vi kan bare spesifisere IOException i kastlisten og gjør programmet ovenfor kompilatorfeilfritt.
Eksempel:
Java
// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException does not occur> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > throws> IOException> > {> > // Creating a file and reading from local repository> > FileReader file => new> FileReader(> 'C: esta.txt'> );> > // Reading content inside a file> > BufferedReader fileInput => new> BufferedReader(file);> > // Printing first 3 lines of file 'C: esta.txt'> > for> (> int> counter => 0> ; counter <> 3> ; counter++)> > System.out.println(fileInput.readLine());> > // Closing all file connections> > // using close() method> > // Good practice to avoid any memory leakage> > fileInput.close();> > }> }> |
>
>
Produksjon:
First three lines of file 'C: esta.txt'>
Uavmerket unntak i Java
Dette er unntakene som ikke sjekkes ved kompilering. I C++ er alle unntak umerket, så det er ikke tvunget av kompilatoren til å håndtere eller spesifisere unntaket. Det er opp til programmererne å være siviliserte og spesifisere eller fange opp unntakene. I Java, unntak under Feil og RuntimeException klasser er ukontrollerte unntak, alt annet under throwable er krysset av.
vikas diviakirti
Tenk på følgende Java-program. Den kompilerer fint, men den kaster Aritmetisk unntak når du løper. Kompileren lar den kompilere fordi Aritmetisk unntak er et ukontrollert unntak.
Eksempel:
Java
// Java Program to Illustrate Un-checked Exceptions> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Here we are dividing by 0> > // which will not be caught at compile time> > // as there is no mistake but caught at runtime> > // because it is mathematically incorrect> > int> x => 0> ;> > int> y => 10> ;> > int> z = y / x;> > }> }> |
>
>
Produksjon
med full form
Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>
Kort sagt er ukontrollerte unntak kjøretidsunntak som ikke kreves for å bli fanget opp eller erklært i en kast-klausul. Disse unntakene er vanligvis forårsaket av programmeringsfeil, for eksempel forsøk på å få tilgang til en indeks utenfor grensene i en matrise eller forsøk på å dele på null.
Unntak som ikke er avmerket inkluderer alle underklasser av RuntimeException-klassen, så vel som Error-klassen og dens underklasser.
Her er noen eksempler på ukontrollerte unntak i Java:
1. ArrayIndexOutOfBoundsException: Dette unntaket blir kastet når du prøver å få tilgang til en matriseindeks som er utenfor grensene.
2. NullPointerException: Dette unntaket blir kastet når du prøver å få tilgang til en null-objektreferanse.
3. Aritmetisk unntak: Dette unntaket blir kastet når du prøver å dele på null eller utføre en ugyldig aritmetisk operasjon.