Soovitatav, 2024

Toimetaja Valik

Kontrollitud ja kontrollimata erandi erinevus Java-süsteemis

“Visatakse” on klasside Viga ja erand ema-klass. Klass “RuntimeException” ja selle alamklassid, klass “Error” ja selle lasteklassid on “kontrollimata erandid”, samas kui klassi “Erand” allesjäänud alamklassid, välja arvatud “RuntimeException”, on kontrollitud erandid. Kontrollitud ja kontrollimata erandi põhiline erinevus on see, et kontrollitud erandeid kontrollib kompilaator, samas kui kompilaator ei kontrolli kontrollimata erandeid .

Arutagem võrdluskaardi abil teisi erinevusi kontrollitud ja kontrollimata erandite vahel.

Võrdluskaart

Võrdluse alusKontrollitud erandKontrollimata erand
PõhilineKoostaja kontrollib kontrollitud erandit.Koostaja ei kontrolli kontrollimata erandit.
ErandiklassVälja arvatud "RuntimeException" klass, on kõik klassi "Erand" lapse klassid ja "Vea" klass ja selle lasteklassid kontrollitud erand.Klass "RuntimeException" ja selle lasteklassid on "Kontrollimata erandid".
KäitlemineKui me ei kontrolli kontrollitud erandit, siis kompilaatori objektid.Isegi kui me ei tegele kontrollimata erandiga, ei ole kompilaator vastu.
KoostamineProgramm ei kompileeri, kui programmi koodis on käsitlemata kontrollitud erand.Programm koostab edukalt ka siis, kui programmi koodis on käsitlemata kontrollimata erand.

Kontrollitud erandi määratlus

Kontrollitud erandid on need erandid, mida kompilaator kontrollib programmi tõrgeteta teostamiseks. Koostaja kontrollib, kas programm suudab kontrollida kontrollitud erandit või mitte. Kui kood ei suuda erandit käsitleda, tekib kompileerimisviga. Kõiki klassi „Erand“ alaliike, välja arvatud RuntimeException klass, on kontrollitud erandid.
Uurime kontrollitud erandit näitega.

 import java.io *; klass Näide {public static void main (String args []) {FileInputStream fis = null; fis = uus FileInputStream ("B: /myfile.txt"); // See konstruktor FileInputStream (failifaili nimi) viskab FileNotFoundException'i, mis on kontrollitud erand. int k; samas ((k = fis.read ())! = -1) {// FileInputStream klassi meetod (read) () loeb samuti kontrollitud erandi: IOException. System.out.print ((char) k); } fis.close (); // Meetod suletakse () sulgeb faili sisendvoo, mille ta viskab IOException. }} 

Ülaltoodud koodis püüame avada, lugeda ja kuvada failide sisu. Võib juhtuda, et fail ei ole olemas, siis toimub FileNotFoundException, mis on kontrollitud erand. Kui kontrollitud erandit ei käsitleta, siis kompilaator ei võimalda programmi sujuvat koostamist. See näitab kompileerimisaja viga. Seega peab tõrgeteta koostamiseks kontrollitud erand olema püütud või visatud.

Kontrollimata erandi määratlus

Kontrollimata erandid on need erandid, mida kompilaator ei kontrolli. Koostaja kompileerib programmi edukalt isegi siis, kui kood ei hõlma erandeid. Klass “Error” ja selle lasteklassid, klass “Runtime” ja selle alaklassid on kontrollimata erandid.

Vaatame näide kontrollimata erandist.

 klass Näide {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }} 

Ülaltoodud koodis näete, et on olemas ArrayIndexOutOfBoundsException, kuna üritan kasutada elementi, mida ei ole olemas. Kuna tegemist on kontrollimata erandiga, siis kompileerimisaja viga ei esine ja fail kompileeritakse ilma vigadeta. Kuid programmi ei rakendata enne, kui erandit käsitletakse. Seega tuleb tõrgeteta teostamiseks erandeid püüda või deklareerida

Kontrollitud ja kontrollimata erandi vahelised peamised erinevused

  1. Kontrollitud erandid on kompilaatori teadmised, kuid kontrollimata erandid ei ole kompilaatori teadmised.
  2. Välja arvatud RuntimeException ja Error class, kontrollitakse kõiki klassid erandina. Teisest küljest on RuntimeException ja Error klassid kontrollimata erandid.
  3. Kui kontrollitud erandeid kood ei käsitle, siis kompilaatori objektid. Teisest küljest, kui me ei tegele kontrollimata eranditega koodis, ei kompileeri seda.
  4. Kui koodis on kontrollitud erandeid, siis kood ei kompileeri, kuigi isegi juhul, kui koodiga ei kontrollita kontrollimata erandeid, koostab kompilaator ikka koodi.

Märge :

Nii kontrollitud kui ka kontrollimata erand on kohustuslik käitamise ajal. Koostaja kontrollib või kontrollib neid ainult kompileerimise ajal.

Järeldus:

Programmi sujuvaks täitmiseks tuleb käsitleda nii kontrollitud kui ka kontrollimata erandeid.

Top