Erinevus kontrollitud ja kontrollimata erandi vahel

Erandite käitlemine Java-s on üks võimsamaid mehhanisme konkreetsete vigade käitlemiseks, mis tekivad käitamise ajal koodijadas. Erandiks pole muud kui käitustõrge, mis häirib rakenduse tavapärast voogu.

Tavaliselt esineb see koodijupis ja kui see juhtub, luuakse seda erandit esindav objekt ja visatud selle põhjustanud meetodis. Selle tulemusel on programm või rakendus häiritud, mis põhjustab rakenduse ebatavalise lõpetamise, mis pole soovitatav. Sellepärast tuleb neid erandeid käsitleda ja siin tuleb pildile erandite käitlemise mehhanism.



Java-s on kahte tüüpi erandeid - kontrollimata ja kontrollimata erandid. Selles artiklis käsitleme üksikasjalikult, mis on kontrollitud ja kontrollimata erand ning millal neid kasutada, ja lõpuks näeme nende kahe erinevust.

Erinevus kontrollitud ja kontrollimata erandi vahel

Mis on Java-is kontrollitud erand?

Need on kompileerimise ajal kontrollitavad ja käsitletavad erandid. Java määratleb standardpaketis mitu erandklassi java.lang ja kõige tavalisemad erandid on standardtüübi alaklassid RuntimeException .



Neid erandeid, mis esinevad väljaspool programmi otsekontrolli asuvates piirkondades, nimetatakse kontrollitud eranditeks. Kui meetod viskab kompileerimise ajal kontrollitud erand, mis ei saa seda ise käsitseda, siis peab ta käsitlema erandit a kinni püüdma blokeerige või kuulutage erand, kasutades viskab märksõna, muidu annab see kompileerimisvea. Koostaja uurib igaühe erandi objekti tüüpi viskama lause ja kui see on märgitud kontrollitud, kontrollib kompilaator lähtekoodi veendumaks, et erandit käsitletakse meetodis, kuhu see visatakse või deklareeritakse, et seda saaks edasi käsitleda.

Kõik kirjeldatud erandid Erand mis on selle otsesed alaklassid, välja arvatud RuntimeException nimetatakse kontrollitud eranditeks. Millal kasutada märgitud erandit? Võite valida kontrollitud erandi, kui teate täpselt, mida siis teha Erand juhtub või kui ebaõnnestumise tõenäosus on suurem. Mõned näited Java raamatukogu kontrollitud eranditest hõlmavad IOExceptionit, DataAccessExceptionit, IllegalAccessExceptionit, InterruptedExceptionit, ClassNotFoundExceptionit, InvocationTargetExceptionit jne.

Erinevus kontrollitud ja kontrollimata erandi vahel



Mis on Java kontrollimatu erand?

Need on erandid, mida kompileerimise ajal ei kontrollita. Märkimata erand on tingimus, mis kajastab üldiselt programmi loogikas esinevaid vigu ja mida ei saa käitusajal taastada.

Lihtsamalt öeldes on kontrollimata erand erand, mis ei kuulu a proovima püüda blokeerida. Neid ei pea otseselt tabama. Tegelikult tegeleb kontrollimata erandi korral Java erandiga automaatselt. Kontrollimata erandid ilmnevad enamasti programmeerimisvigade tõttu, näiteks kui juurdepääsetakse elemendile väljaspool massiivi sidumist või nullobjekti juurdepääsumeetodit. Jaavas kontrollitakse kõiki eristatavaid erandeid, samas kui erandeid, mis on otsesed alamklassid Viga ja RuntimeException on kontrollimata erandid.

Kontrollimata erandi parim osa on see, et see ei vähenda koodi loetavust, hoides samal ajal kliendikoodi puhtana. Mõned näited kontrollimata eranditest hõlmavad ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException jne.



Kontrollitud ja kontrollimata erandi erinevus

Kontrollitud ja kontrollimata erandi määratlus

Märkimata ja kontrollimata erand on Java-s kahte tüüpi erandeid, et tagada rakenduse normaalne voog. Mõlemad täidavad sama eesmärki, mis on Java erandite käsitlemine, ja kuigi funktsionaalsuses pole erinevust, pole ühtegi reeglit, mis määraks, millal kasutada kontrollitud ja millal kontrollimata erandeid. Kontrollitud erand on kompileerimise ajal kontrollitav erand, samas kui kontrollimata erand on see, mida kompileerimise ajal ei kontrollita.

Kontrollitud ja kontrollimata erandi põhitõed

Märgitud erand viitab kehtetutele stsenaariumidele, mis ilmnevad väljaspool programmi otsest kontrolli, samas kui kontrollimata erand viitab programmi vigadele või programmi loogika vigadele, millest ei saa käitamise ajal taastuda.

Erandite käsitlemine

Kui meetod viskab kontrollitud erandi, kontrollib kompilaator, kas meetod käitleb seda erandit proovimispüügi ploki abil või määrab erandi viske märksõnaga. Kui meetod ei paku käitluskoodi, näitab see kompileerimisviga. Vastupidi, programm kompileerib suurepäraselt, sest kompilaator ei kontrolli kompileerimise ajal kontrollimata erandeid.

Kontrollitud ja kontrollimata erandi põhjus

Sageli käsitletakse erandeid, mis pole tuletatud RunTimeExceptionist, kuna käituse ajal esinevaid erandeid käsitletakse harva. Kontrollitud erand tekib siis, kui ebaõnnestumise tõenäosus on liiga suur. Kontrollimata erand toimub seevastu enamasti programmeerimisvigade tõttu. Kõik RuntimeExceptioni ja Error klasside erandid on kontrollimata erandid, samas kui kõik muu heidetav all on kontrollitud erandid.

Kontrollitud ja kontrollimata erandi näited

Mõned kontrollitud erandite näited on IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException ja palju muud. Kontrollimata erandite hulka kuuluvad näiteks NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException jne.

Kontrollitud ja kontrollimata erand: võrdlusdiagramm

Kontrollitud erand VERSUS Kontrollimata erand

Kontrollitud ja kontrollimata erandi kokkuvõte

Märkimata ja kontrollimata erand on Java-s kahte tüüpi erandeid. Kuigi funktsionaalsus on mõlema erandi puhul sama, on neil erinevustes õiglane osa. Peamine erinevus kontrollitud ja kontrollimata erandite vahel on see, et esimest kontrollib kompilaator, samas kui teine ​​väldib kompilaatori teadet. Kompileerimise ajal kontrollitud ja käsitletavad erandid on kontrollitud erandid, samas kui erandid, mida kompileerimise ajal ei kontrollita ega käsitleta, on kontrollimata erandid. Selles artiklis selgitatakse, mida on kontrollitud ja mis on kontrollimata erand, millal neid kasutada, ning selgitatakse nende kahe erinevust.