logo

Tarkistetut vs. tarkistamattomat poikkeukset Javassa

Javassa poikkeus on ei-toivottu tai odottamaton tapahtuma, joka tapahtuu ohjelman suorituksen aikana eli ajon aikana, joka häiritsee ohjelman käskyjen normaalia kulkua.

Javassa on kahdenlaisia ​​poikkeuksia:



  1. Tarkistetut poikkeukset
  2. Tarkistamattomat poikkeukset

Java-tarkistetut vs. valitsemattomat poikkeukset

Tarkistettu poikkeukset Javassa

Nämä ovat poikkeuksia, jotka tarkistetaan käännöshetkellä. Jos jokin menetelmän koodi heittää tarkistetun poikkeuksen, menetelmän on joko käsiteltävä poikkeus tai sen on määritettävä poikkeus käyttämällä heittoja avainsana . Tarkistetuissa poikkeuksissa on kaksi tyyppiä: täysin tarkastetut ja osittain tarkistetut poikkeukset. Täysin tarkistettu poikkeus on tarkistettu poikkeus, jossa myös kaikki sen aliluokat, kuten IOException ja InterruptedException, tarkistetaan. Osittain valittu poikkeus on tarkistettu poikkeus, jossa jotkin sen aliluokat ovat valitsemattomia, kuten poikkeus.

Harkitse esimerkiksi seuraavaa Java-ohjelmaa, joka avaa tiedoston paikassa C: esta.txt ja tulostaa sen kolme ensimmäistä riviä. Ohjelma ei käännä, koska funktio main() käyttää FileReader()-funktiota ja FileReader() heittää tarkistetun poikkeuksen FileNotFoundException . Se käyttää myös readLine()- ja close()-menetelmiä, ja nämä menetelmät heittävät myös tarkistetun poikkeuksen IOException



Esimerkki:

Java

Madhuri sanoi, tule






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

>

>

Lähtö:

Java Checked -poikkeuksen tulos

Korjataksemme yllä olevan ohjelman, meidän on joko määritettävä luettelo poikkeuksista käyttämällä heittoja tai meidän on käytettävä try-catch-lohkoa. Olemme käyttäneet heittoja alla olevassa ohjelmassa. Siitä asti kun FileNotFoundException on alaluokka IOException , voimme vain määrittää IOException heittoluetteloon ja tee yllä olevasta ohjelman kääntäjästä virheetöntä.

Esimerkki:

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

>

>

Lähtö:

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

Valitsemattomat poikkeukset Javassa

Nämä ovat poikkeuksia, joita ei tarkisteta käännösvaiheessa. C++:ssa kaikkia poikkeuksia ei ole valittu, joten kääntäjä ei pakota sitä käsittelemään tai määrittämään poikkeusta. Ohjelmoijien tehtävänä on olla sivistynyt ja määritellä tai ottaa kiinni poikkeuksista. Javassa poikkeukset alla Virhe ja RuntimeException luokat ovat valitsemattomia poikkeuksia, kaikki muu heitettävän alla on valittu.

Harkitse seuraavaa Java-ohjelmaa. Se kokoaa hyvin, mutta se heittää Aritmeettinen poikkeus ajettaessa. Kääntäjä sallii sen kääntämisen, koska Aritmeettinen poikkeus on tarkistamaton poikkeus.

Esimerkki:

Java




javascript trim alimerkkijono
// 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;> >}> }>

>

>

Lähtö

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

Lyhyesti sanottuna valitsemattomat poikkeukset ovat ajonaikaisia ​​poikkeuksia, joita ei tarvitse ottaa kiinni tai ilmoittaa heittolausekkeessa. Nämä poikkeukset johtuvat yleensä ohjelmointivirheistä, kuten yrityksistä päästä indeksiin taulukon rajojen ulkopuolella tai yrityksistä jakaa nollalla.

Valitsemattomat poikkeukset sisältävät kaikki RuntimeException-luokan alaluokat sekä Error-luokan ja sen alaluokat.

Tässä on joitain esimerkkejä tarkistamattomista poikkeuksista Javassa:

1. ArrayIndexOutOfBoundsException: Tämä poikkeus syntyy, kun yrität käyttää taulukkoindeksiä, joka on rajojen ulkopuolella.
2. NullPointerException: Tämä poikkeus heitetään, kun yrität käyttää tyhjää objektiviittausta.
3. Aritmeettinen poikkeus: Tämä poikkeus syntyy, kun yrität jakaa nollalla tai suorittaa virheellisen aritmeettisen toiminnon.