Erandkäsitlus Java-s on üks võimas mehhanism konkreetsete vigade käsitlemiseks, mis tekivad koodijärjestuses käitusel. Erandiks pole muud kui käitusviga, mis häirib rakenduse tavapärast voogu.
Tavaliselt toimub see kooditükina ja kui see juhtub, luuakse seda erandit esindav objekt ja visatud meetodis, mis selle põhjustas. Selle tagajärjel on programm või rakendus katkenud, põhjustades rakenduse ebahariliku lõpetamise, mis pole soovitatav. Seetõttu tuleb neid erandeid käsitleda ja just siin saabki erandite käsitlemise mehhanism.
Java-s on kahte tüüpi erandeid - kontrollitud ja märkimata erand. Selles artiklis käsitleme üksikasjalikult, mis on kontrollitud ja märkimata erand ja millal neid kasutada, ning viimasena näeme erinevust nende kahe vahel.
Need on erandid, mida kontrollitakse ja käsitletakse kompileerimise ajal. Java määratleb standardpaketi sees mitu erandiklassi java.lang, ja kõige tavalisemad erandid on standardset tüüpi alamklassid RuntimeException.
Neid erandeid, mis esinevad programmi otsese kontrolli alt väljas olevatel aladel, nimetatakse kontrollitud eranditeks. Kui meetod viskab kompileerimise ajal kontrollitud erand, mis ei saa ise hakkama, siis peab ta erandit käsitlema punktis a saagi blokeerige või kuulutage erand, kasutades viskab märksõna, vastasel juhul annab see kompileerimisvea. Kompilaator uurib erandobjekti tüüpi iga puhul viska avalduse ja kui see on märgitud, kontrollib kompilaator lähtekoodi, veendumaks, et erandit käsitletakse meetodis, kus see visatakse või deklareeritakse, et seda saaks edasi töödelda.
Kõik erandid, mida kirjeldas Erand mis on selle otsesed alaklassid, välja arvatud RuntimeException nimetatakse kontrollitud eranditeks. Millal kasutada märgitud erandit? Võite kasutada kontrollitud erandit, kui teate täpselt, mida teha, kui Erand ilmneb või kui ebaõnnestumise tõenäosus on suurem. Mõned näited kontrollitud eranditest Java teegis hõlmavad IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException, InvocationTargetException jne..
Need on erandid, mida kompileerimise ajal ei kontrollita. Märgistamata erand tähistab tingimust, mis kajastab üldjuhul programmi loogika vigu ja mida ei saa käituse ajal taastada.
Lihtsamalt öeldes on märkimata erand erand, mis ei kuulu a-kirja proovida-püüda blokeerida. Neid pole vaja selgesõnaliselt tabada. Tegelikult tegeleb Java kontrollimata erandi korral erandiga automaatselt. Kontrollimata erandid tekivad enamasti programmeerimisvigade tõttu, näiteks elemendi juurde pääsemisel väljaspool massiivi ühendamist või nullobjektile juurdepääsu meetodil. Jaavas on kõik visatavad erandid kontrollitud erandid, samas kui erandid, mis on otsesed alamklassid Viga ja RuntimeException on märkimata erandid.
Parim osa kontrollimata erandist on see, et see ei vähenda koodi loetavust, hoides samas kliendikoodi puhtana. Mõned näited kontrollimata eranditest on ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException jne..
Kontrollitud ja märkimata erand on Java-tüüpi kahte tüüpi erandid, mis tagavad rakenduse normaalse voo. Mõlemad teenivad sama eesmärki, mis on Java-siseste erandite käsitlemine. Ehkki funktsionaalsuses pole erinevusi, pole ühte reeglit, mis määraks, millal kasutada märgitud ja millal kontrollimata erandit. Kontrollitud erand on erand, mida kontrollitakse kompileerimise ajal, samas kui märkimata erand on see, mida kompileerimise ajal ei kontrollita.
Kontrollitud erand viitab kehtetutele stsenaariumidele, mis esinevad väljaspool programmi otsest juhtimist, samas kui märkimata erand viitab programmi vigadele või programmi loogika tõrgetele, mida käitusel ei ole võimalik taastada.
Kui meetod viskab kontrollitud erandi, kontrollib kompilaator, kas meetod käitleb seda erandit proovipüügi ploki abil, või täpsustab erandit viskamise märksõna abil. Kui meetod ei anna käitlemiskoodi, näitab see kompileerimisviga. Vastupidi, programm kompileerib just hästi, sest kompilaator ei kontrolli kompileerimise ajal kontrollimata erandeid.
Eranditega, mis pole tuletatud rakendusest RunTimeException, käsitletakse sageli, kuna kuna käitusel esinevad erandid, käsitletakse neid harva. Kontrollitud erand toimub siis, kui ebaõnnestumise tõenäosus on liiga kõrge. Kontrollimata erand seevastu ilmneb enamasti programmeerimisvigade tõttu. Kõik erandid RuntimeException ja Error klassides on märkimata erandid, samas kui kõik muu visatavate all on kontrollitud erandid.
Mõned kontrollitud erandite näited on IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException ja palju muud. Kontrollimata erandite näideteks on NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException jne..
Kontrollitud ja märkimata erand on Java-tüüpi kahte tüüpi erandid. Ehkki funktsionaalsus on mõlemal erandil sama, on nende erinevused õiglane. Peamine erinevus kontrollitud ja kontrollimata erandite vahel on see, et esimest kontrollib kompilaator, teine aga jätab kompilaatori teate. Erandid, mida kontrollitakse ja käsitletakse kompileerimise ajal, on kontrollitud erandid, seevastu erandid, mida ei kontrollita ega käsitleta kompileerimise ajal, on märkimata erandid. Selles artiklis selgitatakse, mida on kontrollitud ja mis on märkimata erand, millal neid kasutada, ning selgitatakse nende kahe erinevust.