Põhierinevus – Javas märgitud vs märkimata erand
Erandiks on käitusaegne viga. On kahte tüüpi erandeid, mida nimetatakse kontrollitud ja märkimata eranditeks. Märgitud erandi ilmnemisel ühendatakse Java-rakendus välise ressursiga, näiteks faili, seadme või andmebaasiga. Neid erandeid kontrollib kompilaator. Mõned kontrollitud erandite näited on IO erand ja FileNotFoundi erand. Märkimata erandi ilmnemisel pole rakendus ühendatud ühegi välise ressursiga. Neid erandeid kompilaator ei kontrolli. Märkimata erandite näited on Aritmeetiline erand ja ArrayOutOfBound Exception. Selles artiklis käsitletakse erinevust märgitud ja märkimata erandite vahel Javas. Peamine erinevus Java kontrollitud ja kontrollimata erandite vahel on see, et kontrollitud erandit kontrollib kompilaator, samas kui kontrollimata erandit kompilaator ei kontrolli.
Mis on Javas märgitud erand?
Märgitud erandi ilmnemisel ühendatakse Java-rakendus välise ressursiga. See ressurss võib olla seade, näiteks printer. See võib olla fail või andmebaas. Seetõttu kontrollib kompilaator neid erandeid. IO erand on kontrollitud erand. See tekib seadme tõrke tõttu. Kui rakendus pääseb juurde failile, mida pole olemas, põhjustab see FileNotFoundi erandi. Andmete salvestamiseks saab rakenduse ühendada andmebaasiga, nagu MySQL, Oracle jne. Kui andmebaasiga seotud viga ilmnes, on see SQL-erand. Need on mõned näited kontrollitud eranditest. Kõigis neis on rakendus ühendatud välise ressursiga. Kontrollitud erandite puhul on erandi käsitlemine kohustuslik. Kui seda ei käsitleta, siis programmi õige voog katkestatakse ja klassifaili ei genereerita. Tõrke saab lahendada proovivõtuploki abil.
Joonis 01: Kontrollitud erandite käsitlemine
Vastav alt ül altoodule luges FileReader failist andmeid. Faili text1.txt määratud asukohas ei eksisteeri. Kood, mis võib teha erandi, asetatakse prooviploki sisse. Prinditav sõnum on püüdmisploki sees. Kuna faili nimega text1.txt pole, põhjustab see FileNotFoundExceptioni. Kasutades erandite käsitlemist, prinditakse teade ekraanile.
Mis on Javas kontrollimata erandid?
Märgistamata erandeid kompilaator ei kontrolli. Erinev alt kontrollitud eranditest pole märkimata erandite puhul Java-rakendus ühendatud välise ressursiga, nagu fail, andmebaas või seade. Mõned levinumad märkimata erandid on aritmeetilised, arrayOutOfBound ja NullPointer erandid.
int a=10, b=0;
int div=a/b;
System.out.println(div);
See põhjustab aritmeetilise erandi, kuna a sukeldub nulliga. Vaadake allolevat koodi.
Joonis 02: Aritmeetiliste erandite käsitlemine
Vastav alt ül altoodud programmile on muutuja a täisarv. Muutuja b on 0. Nende kahe arvu jagamine on jagamine nulliga. Seetõttu põhjustab see aritmeetilise erandi. Seda saab käsitleda try-catch ploki abil. Avaldused, mis võivad erandi põhjustada, paigutatakse prooviploki sisse. Kuvatav teade on püüdmisplokis.
Vaadake allolevat koodiosa.
int array1={1, 2, 3, 4, 5};
System.out.println(massiiv1[5]);
See põhjustab erandi. Massiiv1 on 5 elemendiga massiiv. Massiivi algusindeks on null. Indeksi väärtuse 5th printimine põhjustab erandi, kuna see on sidumata. Massiivi1 maksimaalne indeks on 4.
Joonis 03: ArrayOutOfBound erandite käsitlemine
Vastav alt ül altoodud programmile on massiivis1 5 elementi. Elemendi trükkimine indeksiga 6 põhjustab erandi, kuna see on sidumata. Maksimaalne indeks, mida massiivi1 salvestada, on 5. Veateade prinditakse püüdmisploki käivitamisel.
Milline on Java kontrollitud ja kontrollimata erandite sarnasus
Nii Javas märgitud kui ka märkimata erand on Java eranditüübid
Mis vahe on Javas märgitud ja kontrollimata erandil?
Märgitud vs märkimata erand Javas |
|
Kontrollitud erand on käitusaegne viga, mida kompilaator kontrollib. | Märkimata erand on käitusaegne viga, mida kompilaator ei kontrolli. |
Esinemine | |
Märgitud erandi ilmnemisel ühendatakse Java-rakendus välise ressursiga, nagu fail, seade või andmebaas. | Kui ilmneb märkimata erand, ei ole Java-rakendus ühendatud välise ressursiga. |
Näited | |
IOException, FileNotFoundException, SQLException on mõned näited kontrollitud eranditest. | Aritmeetiline erand, ArrayOutOfBoundException, NullPointerException on mõned näited kontrollimata eranditest. |
Kokkuvõte – Javas märgitud vs kontrollimata erand
Erand on sündmus, mis katkestab programmivoo täitmise. Erandeid on kahte tüüpi. Neid nimetatakse kontrollitud eranditeks ja kontrollimata eranditeks. Selles artiklis käsitleti erinevust kontrollitud erandite ja kontrollimata erandite vahel. Java kontrollitud ja kontrollimata erandi erinevus seisneb selles, et kontrollitud erandit kontrollib kompilaator, kontrollimata erandit aga kompilaator ei kontrolli. Kuna erandid mõjutavad programmi täitmise õiget voogu, on hea programmeerimistava nendega tegeleda.