logo

Eccezioni controllate e non controllate in Java

In Java, eccezione è un evento indesiderato o inaspettato, che si verifica durante l’esecuzione di un programma, cioè in fase di esecuzione, che interrompe il normale flusso delle istruzioni del programma.

In Java esistono due tipi di eccezioni:



  1. Eccezioni controllate
  2. Eccezioni non controllate

Eccezioni Java controllate e non controllate

Eccezioni controllate in Java

Questi sono le eccezioni che vengono controllate in fase di compilazione. Se parte del codice all'interno di un metodo genera un'eccezione verificata, il metodo deve gestire l'eccezione oppure deve specificare l'eccezione utilizzando l'istruzione lancia parola chiave . Nelle eccezioni controllate, esistono due tipi: eccezioni completamente controllate e parzialmente controllate. Un'eccezione completamente controllata è un'eccezione controllata in cui vengono controllate anche tutte le sue classi figlie, come IOException e InterruptedException. Un'eccezione parzialmente controllata è un'eccezione controllata in cui alcune delle sue classi figlie non sono controllate, come un'eccezione.

Ad esempio, considera il seguente programma Java che apre il file nella posizione C: esta.txt e ne stampa le prime tre righe. Il programma non viene compilato, perché la funzione main() utilizza FileReader() e FileReader() genera un'eccezione controllata FileNotFoundException . Utilizza anche i metodi readLine() e close() e questi metodi lanciano anche un'eccezione controllata IOException



stlc

Esempio:

Giava






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

>

>

Produzione:

Output dell'eccezione Java Checked

Per correggere il programma di cui sopra, dobbiamo specificare un elenco di eccezioni utilizzando i lanci oppure dobbiamo utilizzare un blocco try-catch. Abbiamo utilizzato i lanci nel programma seguente. Da FileNotFoundException è una sottoclasse di IOException , possiamo solo specificare IOException nell'elenco dei lanci e rendere il programma sopra privo di errori di compilazione.

Esempio:

Giava

sonno javascript




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

>

>

Produzione:

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

Eccezioni non controllate in Java

Queste sono le eccezioni che non vengono controllate in fase di compilazione. In C++, tutte le eccezioni sono deselezionate, quindi il compilatore non è obbligato a gestire o specificare l'eccezione. Spetta ai programmatori essere civili e specificare o cogliere le eccezioni. In Java, le eccezioni sotto Errore E RuntimeException le classi sono eccezioni non controllate, tutto il resto sotto Throwable è controllato.

quante città negli Stati Uniti

Consideriamo il seguente programma Java. Si compila bene, ma lancia ArithmeticException quando corri. Il compilatore gli consente di compilare perché ArithmeticException è un'eccezione non controllata.

Esempio:

Giava


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

>

>

Produzione

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

In breve, le eccezioni non controllate sono eccezioni di runtime che non devono essere catturate o dichiarate in una clausola Throws. Queste eccezioni sono generalmente causate da errori di programmazione, come il tentativo di accedere a un indice fuori dai limiti di un array o il tentativo di dividere per zero.

Le eccezioni non controllate includono tutte le sottoclassi della classe RuntimeException, nonché la classe Error e le sue sottoclassi.

Ecco alcuni esempi di eccezioni non controllate in Java:

1. ArrayIndexOutOfBoundsException: Questa eccezione viene generata quando si tenta di accedere a un indice di array fuori dai limiti.
2. NullPointerException: Questa eccezione viene generata quando si tenta di accedere a un riferimento a un oggetto nullo.
3. Eccezione aritmetica: Questa eccezione viene generata quando si tenta di dividere per zero o di eseguire un'operazione aritmetica non valida.