Javalla, poikkeus on tapahtuma, joka tapahtuu ohjelman suorituksen aikana ja häiritsee ohjelman käskyjen normaalia kulkua. Vikoja tai virheitä, joita emme halua ja jotka rajoittavat ohjelmamme normaalia koodin suorittamista, kutsutaan nimellä poikkeuksia . Tässä osiossa keskitymme siihen tyyppisiä poikkeuksia Javassa ja erot näiden kahden välillä.
Poikkeukset voidaan luokitella kahdella tavalla:
- Sisäänrakennetut poikkeukset
- Tarkistettu poikkeus
- Valitsematon poikkeus
- Käyttäjän määrittämät poikkeukset
Sisäänrakennettu poikkeus
Poikkeukset jotka ovat jo saatavilla Java-kirjastot kutsutaan nimellä sisäänrakennettu poikkeus . Nämä poikkeukset pystyvät määrittelemään virhetilanteen, jotta voimme ymmärtää tämän virheen saamisen syyn. Se voidaan luokitella kahteen laajaan luokkaan, ts. tarkistetut poikkeukset ja valitsematon poikkeus .
Tarkistettu poikkeus
Tarkistettu poikkeuksia kutsutaan käännösaika poikkeuksia, koska kääntäjä tarkistaa nämä poikkeukset käännöshetkellä. Kääntäjä varmistaa, käsitteleekö ohjelmoija poikkeusta vai ei. Ohjelmoijan tulee käsitellä poikkeus; muuten järjestelmä on osoittanut käännösvirheen.
tuplaa javassa
CheckedExceptionExample.java
import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } }
Yllä olevassa koodissa yritämme lukea Hei.txt tiedosto ja näyttää sen tiedot tai sisältö näytöllä. Ohjelma antaa seuraavat poikkeukset:
- The FileInputStream (tiedoston tiedostonimi) rakentaja heittää FileNotFoundException se on tarkistettu poikkeus.
- The lukea() menetelmä FileInputStream luokka heittää IOException .
- The kiinni() menetelmä heittää myös IOExceptionin.
Lähtö:
Kuinka korjata virhe?
On periaatteessa kaksi tapaa, joilla voimme ratkaista nämä virheet.
javascript uni
1) Poikkeukset esiintyvät päämenetelmässä. Voimme päästä eroon näistä käännösvirheistä ilmoittamalla poikkeuksen päämenetelmässä käyttämällä heitot Ilmoitamme vain IOExceptionin, emme FileNotFoundExceptionin, koska lapsi-vanhempi -suhde. IOException-luokka on FileNotFoundExceptionin yläluokka, joten tämä poikkeus kattaa automaattisesti IOExceptionin. Ilmoitamme poikkeuksen seuraavasti:
class Exception{ public static void main(String args[]) throws IOException { ... ... }
Jos käännämme ja suoritamme koodin, virheet katoavat ja näemme tiedoston tiedot.
2) Voimme myös käsitellä näitä poikkeuksia käyttämällä yritä saada kiinni Edellä käyttämämme tapa ei kuitenkaan ole oikea. Meidän on annettava merkityksellinen viesti jokaiselle poikkeustyypille. Näin tekemällä virheen ymmärtäminen olisi helppoa. Käytämme try-catch -lohkoa seuraavalla tavalla:
Poikkeus.java
import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } }
Näemme oikean virheilmoituksen 'Tiedostoa ei löytynyt!' konsolissa, koska kyseisessä paikassa ei ole tällaista tiedostoa.
Valitsemattomat poikkeukset
The valitsematon poikkeukset ovat juuri päinvastaisia kuin tarkistettu poikkeuksia. Kääntäjä ei tarkista näitä poikkeuksia käännösvaiheessa. Yksinkertaisesti sanottuna, jos ohjelma heittää tarkistamattoman poikkeuksen, ja vaikka emme käsittelisi tai ilmoittaisi sitä, ohjelma ei antaisi käännösvirhettä. Yleensä se tapahtuu, kun käyttäjä antaa huonoja tietoja vuorovaikutuksessa ohjelman kanssa.
Huomautus: RuntimeException-luokka pystyy ratkaisemaan kaikki valitsemattomat poikkeukset lapsi-vanhempi-suhteen vuoksi.
Ei valittunaPoikkeusExample1.java
class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } }
Yllä olevassa ohjelmassa olemme jakaneet 35 0:lla. Koodi käännetään onnistuneesti, mutta se aiheuttaa ArithmeticException-virheen suorituksen aikana. Kun luku jaetaan nollalla, jaetaan nollalla -poikkeus, joka on poikkeuksen valinta.
Lähtö:
arraylist java-lajittelu
UncheckedException1.java
class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } }
Lähtö:
Yllä olevassa koodissa yritämme saada elementin, joka sijaitsee paikassa 7, mutta taulukon pituus on 6. Koodi käännetään onnistuneesti, mutta heittää ArrayIndexOutOfBoundsExceptionin ajon aikana.
Käyttäjän määrittämä poikkeus
Sisään Java , meillä on jo joitain sisäänrakennettuja poikkeusluokkia, kuten ArrayIndexOutOfBoundsException , NullPointerException , ja Aritmeettinen poikkeus . Nämä poikkeukset rajoittuvat käynnistymään joissakin ennalta määritetyissä olosuhteissa. Javassa voimme kirjoittaa oman poikkeusluokkamme laajentamalla Exception-luokkaa. Voimme heittää oman poikkeuksemme tiettyyn ehtoon käyttämällä throw-avainsanaa. Jotta voimme luoda käyttäjän määrittämän poikkeuksen, meillä pitäisi olla perustiedot the yritä saada kiinni lohko ja heittää avainsana .
kirjoitetaan a Java ohjelma ja luo käyttäjän määrittämä poikkeus.
UserDefinedException.java
import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } }
Lähtö:
Kuvaus:
Yllä olevaan koodiin olemme luoneet kaksi luokkaa, ts. UserDefinedException ja Uusi poikkeus . The UserDefinedException on päämenetelmämme ja Uusi poikkeus luokka on käyttäjän määrittelemä poikkeusluokkamme, joka laajenee poikkeus . Vuonna Uusi poikkeus luokassa, luomme muuttujan x tyypin kokonaisluku ja anna sille arvo rakentajassa. Kun tälle muuttujalle on annettu arvo, palautetaan poikkeusviesti.
Vuonna UserDefinedException luokka, olemme lisänneet a yritä saada kiinni lohko. Kokeile-osiossa heitämme poikkeuksen, eli Uusi poikkeus ja välitä sille kokonaisluku. Arvo välitetään NewException-luokkaan ja palauttaa viestin. Otamme tämän viestin kiinni ja näytämme sen näytöllä.
pandat ja numpy
Ero valitun ja valitsemattoman poikkeuksen välillä
Kyllä ei | Tarkistettu poikkeus | Valitsematon poikkeus |
---|---|---|
1. | Nämä poikkeukset tarkistetaan käännösvaiheessa. Nämä poikkeukset käsitellään myös käännösvaiheessa. | Nämä poikkeukset ovat juuri päinvastaisia kuin tarkistetut poikkeukset. Näitä poikkeuksia ei tarkisteta eikä käsitellä käännösvaiheessa. |
2. | Nämä poikkeukset ovat poikkeuksen suoria alaluokkia, mutta niitä ei ole laajennettu RuntimeException-luokasta. | Ne ovat RuntimeException-luokan suoria alaluokkia. |
3. | Koodi antaa käännösvirheen siinä tapauksessa, että menetelmä heittää tarkistetun poikkeuksen. Kääntäjä ei pysty käsittelemään poikkeusta yksin. | Koodi käännetään ilman virheitä, koska poikkeukset jäävät kääntäjän huomaamatta. Nämä poikkeukset ovat seurausta käyttäjän ohjelmointilogiikassa aiheuttamista virheistä. |
4. | Näitä poikkeuksia esiintyy useimmiten silloin, kun epäonnistumisen todennäköisyys on liian korkea. | Nämä poikkeukset johtuvat enimmäkseen ohjelmointivirheistä. |
5. | Yleisiä tarkistettuja poikkeuksia ovat IOException, DataAccessException, InterruptedException jne. | Yleisiä valitsemattomia poikkeuksia ovat ArithmeticException, InvalidClassException, NullPointerException jne. |
6. | Nämä poikkeukset levitetään heitto-avainsanalla. | Nämä levitetään automaattisesti. |
7. | Tarkistetun poikkeuksen käsitteleminen edellyttää try-catch- ja try-finally-estoa. | Tarkistamattoman poikkeuksen tapauksessa se ei ole pakollinen. |
Vikoja tai virheitä, joita emme halua ja jotka rajoittavat ohjelmien normaalia suoritusta, kutsutaan nimellä poikkeuksia .
ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions jne. kuuluvat luokkaan Sisäänrakennettu poikkeus . Joskus sisäänrakennetut poikkeukset eivät riitä selittämään tai kuvaamaan tiettyjä tilanteita. Näiden tilanteiden kuvaamiseksi meidän on luotava omat poikkeuksemme luomalla poikkeusluokka Poikkeus luokkaa. Tämäntyyppiset poikkeukset kuuluvat luokkaan Käyttäjän määrittelemä poikkeus .