„Throwable“ yra klasių klaida „Error and Exception“. Klasė „RuntimeException“ ir jos poklasiai, „Error“ klaida ir jos klasės yra „Nepažymėtos išimtys“, o likusieji „Išimties“ klasės poklasiai, išskyrus „RuntimeException“, yra patikrintos išimtys. Pagrindinis skirtumas tarp patikrintos ir nepažymėtos išimties yra tai, kad patikrintas išimtis tikrina kompiliatorius, o kompiliatorius nekontroliuoja nekontroliuojamų išimčių .
Aptarkime kitus skirtumus tarp patikrintų ir nekontroliuojamų išimčių palyginimo lentelės pagalba.
Palyginimo diagrama
Palyginimo pagrindas | Patikrinta išimtis | Nepažymėta išimtis |
---|---|---|
Pagrindinis | Kompiliatorius patikrina patikrintą išimtį. | Kompiliatorius nekontroliuoja nepažymėtos išimties. |
Išimties klasė | Išskyrus „RuntimeException“ klasę, visos klasės „Išimtis“ klasės ir „Klaidos“ klasės ir jos vaikų klasės yra patikrintos išimtys. | „RuntimeException“ klasė ir jos vaikų klasės yra „Nepažymėtos išimtys“. |
Naudojimas | Jei nekontroliuojame patikrintos išimties, tada kompiliatoriaus objektai. | Net jei mes nekontroliuojame nepažymėtos išimties, kompiliatorius neprieštarauja. |
Kompiliavimas | Programa nekompiliuoja, jei programos kode yra nekontroliuojama patikrinta išimtis. | Programa sėkmingai kaupia, net jei programos kode yra neišnagrinėta nepažymėta išimtis. |
Patikrintos išimties apibrėžimas
Patikrintos išimtys yra tos išimtys, kurias kompiliatorius tikrina sklandžiam programos vykdymui. Kompiliatorius patikrina, ar programa gali valdyti patikrintą išimtį. Jei kodas negali apdoroti išimties, atsiranda kompiliavimo klaida. Visos klasės „Išimtis“, išskyrus „RuntimeException“ klasę, poklasiai yra patikrintos išimtys.
Ištirsime patikrintą išimtį pavyzdžiu.
importuoti java.io *; klasė Pavyzdys {public static void main (String args []) {FileInputStream fis = null; fis = naujas FileInputStream ("B: /myfile.txt"); // Šis konstruktorius FileInputStream (failo failo pavadinimas) išmeta FileNotFoundException, kuri yra patikrinta išimtis. int k; o ((k = fis.read ())! = -1) {// FileInputStream klasės metodas (), taip pat išmeta patikrintą išimtį: IOException. System.out.print ((char) k); } fis.close (); // Metodas uždaromas () uždaro failo įvesties srautą, kurį jis išmeta IOException. }}
Anksčiau pateiktame kode bandome atidaryti, skaityti ir rodyti failo turinį. Gali atsitikti, kad failo nėra, tada atsiras FileNotFoundException, kuri yra patikrinta išimtis. Jei patikrinta išimtis nėra tvarkoma, kompiliatorius neleidžia programai sudaryti sklandžiai. Bus rodoma kompiliavimo laiko klaida. Taigi, sklandžiai kompiliuojant, patikrinta išimtis turi būti sugauta arba paskelbta mesti.
Nenustatytos išimties apibrėžimas
Nepažymėtos Išimtys yra tos išimtys, kurių kompiliatorius nekontroliuoja. Kompiliatorius sėkmingai sukompiliuoja programą, net jei kodo išimčių nėra. Klasės „Klaida“ ir jos vaikų klasės, „Runtime“ klasė ir jos poklasiai yra nekontroliuojamos išimtys.
Pažiūrėkime nepažymėtos išimties pavyzdį.
klasė Pavyzdys {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }}
Anksčiau pateiktame kode galite matyti, kad yra „ArrayIndexOutOfBoundsException“, nes bandau pasiekti elementą, kurio nėra. Kadangi tai yra nepažymėta išimtis, kompiliavimo laiko klaida nebus, ir failas bus sukompiliuotas be jokių klaidų. Tačiau programa nebus vykdoma, kol nebus išimta išimtis. Taigi, sklandžiam vykdymui, išimtys turi būti sugautos arba paskelbtos
Pagrindiniai skirtumai tarp patikrintos ir nekontroliuojamos išimties
- Patikrintos išimtys yra kompiliatoriaus žinios, o nekontroliuojamos išimtys nėra kompiliatoriaus žinios.
- Išskyrus „RuntimeException“ ir „Error class“, visos klasės tikrinamos išimtis. Kita vertus, „RuntimeException“ ir „Error“ klasės yra nekontroliuojamos išimtys.
- Jei pažymėtos išimtys nėra tvarkomos kodo, tada kompiliatoriaus objektai. Kita vertus, jei mes nekontroliuojami nepažymėtos išimtys kode, kompiliatorius neprieštarauja.
- Jei kode yra patikrintų išimčių, kodas nebus sukompiliuotas, tačiau net jei nekontroliuojamos išimtys nebus tvarkomos kodu, kompiliatorius vis tiek surenka kodą.
Pastaba:
Tiek patikrinta, tiek nekontroliuojama išimtis privalomai vykdoma vykdymo metu. Kompiliatorius juos tikrina arba nekontroliuoja kompiliavimo metu.
Išvada:
Siekiant, kad programa būtų vykdoma sklandžiai, turi būti tvarkomos ir patikrintos, ir nekontroliuojamos išimtys.