logo

Kontrollerede vs umarkerede undtagelser i Java

I Java, Undtagelse er en uønsket eller uventet hændelse, som opstår under afviklingen af ​​et program, dvs. ved kørsel, som forstyrrer det normale flow af programmets instruktioner.

I Java er der to typer undtagelser:



  1. Kontrollerede undtagelser
  2. Umarkerede undtagelser

Java kontrolleret vs umarkerede undtagelser

hvad er svn checkout

Afkrydset undtagelser i Java

Disse er de undtagelser, der kontrolleres på kompileringstidspunktet. Hvis en kode inden for en metode kaster en markeret undtagelse, så skal metoden enten håndtere undtagelsen, eller den skal specificere undtagelsen ved hjælp af kaster søgeord . I kontrollerede undtagelser er der to typer: fuldt kontrollerede og delvist kontrollerede undtagelser. En fuldt kontrolleret undtagelse er en kontrolleret undtagelse, hvor alle dens underordnede klasser også er kontrolleret, som IOException og InterruptedException. En delvist markeret undtagelse er en markeret undtagelse, hvor nogle af dens underordnede klasser ikke er markeret, f.eks. en undtagelse.

Overvej f.eks. følgende Java-program, der åbner filen på placering C: esta.txt og udskriver de første tre linjer af den. Programmet kompilerer ikke, fordi funktionen main() bruger FileReader(), og FileReader() kaster en markeret undtagelse FileNotFoundException . Den bruger også readLine() og close() metoder, og disse metoder kaster også markeret undtagelse 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();> >}> }>

>

noget hurtig sortering
>

Produktion:

Output af Java Checked undtagelsen

For at rette ovenstående program skal vi enten angive en liste over undtagelser ved hjælp af kast, eller vi skal bruge en try-catch blok. Vi har brugt kast i nedenstående program. Siden FileNotFoundException er en underklasse af IOException , vi kan bare specificere IOException i kastlisten og gør ovenstående program kompilator-fejlfrit.

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();> >}> }>

>

>

Produktion:

First three lines of file 'C:	esta.txt'>

Ikke-markerede undtagelser i Java

Dette er de undtagelser, der ikke kontrolleres på kompileringstidspunktet. I C++ er alle undtagelser ikke markeret, så det er ikke tvunget af compileren til hverken at håndtere eller specificere undtagelsen. Det er op til programmørerne at være civiliserede og specificere eller fange undtagelserne. I Java er undtagelser under Fejl og RuntimeException klasser er ukontrollerede undtagelser, alt andet under throwable er markeret.

vikas diviakirti

Overvej følgende Java-program. Det kompilerer fint, men det kaster Aritmetisk Undtagelse når man løber. Compileren tillader den at kompilere fordi Aritmetisk Undtagelse er en ukontrolleret undtagelse.

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;> >}> }>

>

>

Produktion

eksempler på Moore maskine
Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>

Kort sagt, ukontrollerede undtagelser er runtime-undtagelser, der ikke kræves for at blive fanget eller erklæret i en throws-klausul. Disse undtagelser er normalt forårsaget af programmeringsfejl, såsom forsøg på at få adgang til et indeks uden for grænserne i et array eller forsøg på at dividere med nul.

Ikke-markerede undtagelser inkluderer alle underklasser af klassen RuntimeException, såvel som klassen Error og dens underklasser.

Her er nogle eksempler på umarkerede undtagelser i Java:

1. ArrayIndexOutOfBoundsException: Denne undtagelse opstår, når du forsøger at få adgang til et matrixindeks, der er uden for grænserne.
2. NullPointerException: Denne undtagelse fremkommer, når du forsøger at få adgang til en nul-objektreference.
3. Aritmetisk undtagelse: Denne undtagelse opstår, når du forsøger at dividere med nul eller udføre en ugyldig aritmetisk operation.