“Throwable” je roditeljska klasa klasa Error and Exception. Klasa "RuntimeException" i njezine podklase, klasa "Error" i njezine podređene klase su "neprovjerene iznimke", dok su preostali podrazredi klase "Exception" osim "RuntimeException" provjerene iznimke. Osnovna razlika između provjerenih i neprovjerenih iznimaka je da provjerene iznimke provjerava kompajler, dok kompajler ne provjerava neprovjerene iznimke .
Razgovarajmo o ostalim razlikama između označenih i neprovjerenih iznimaka uz pomoć usporedne tablice.
Tablica usporedbe
Osnova za usporedbu | Provjerena iznimka | Neoznačena Iznimka |
---|---|---|
Osnovni, temeljni | Kompajler provjerava provjerenu iznimku. | Kompajler ne provjerava iznimku Nezapisani. |
Klasa iznimke | Osim "RuntimeException" klase sve dijete klase klase "Iznimka", i "Error" klase i klase dijete su Checked Exception. | Klasa "RuntimeException" i njezine podređene klase, su "Neoznačene iznimke". |
Rukovanje | Ako ne postupamo s provjerenom iznimkom, onda kompajler objektima. | Čak i ako se ne nosimo s izuzetkom koji nije označen, kompajler se ne protivi. |
Kompilacija | Program se ne kompajlira ako u programskom kodu postoji neobrađena kontrolirana iznimka. | Program se uspješno kompilira čak i ako u programskom kodu postoji neobrađena neoznačena iznimka. |
Definicija provjerenog izuzetka
Označene iznimke su one iznimke koje kompajler provjerava za glatko izvođenje programa. Kompajler provjerava može li program obraditi označenu iznimku ili ne. Ako kôd ne može obraditi iznimku, pojavljuje se pogreška kompilacije. Sve podrazrede klase “Iznimka” osim klase RuntimeException su provjerene iznimke.
Proučimo iznimku s primjerom.
import java.io. *; klasa Primjer {public static void main (String args []) {FileInputStream fis = null; fis = new FileInputStream ("B: /file.txt"); // Ovaj konstruktor FileInputStream (File filename) baca FileNotFoundException koji je označena iznimka. int k; while ((k = fis.read ())! = -1) {// Metoda read () klase FileInputStream također izbacuje označenu izuzetak: IOException. System.out.print ((char) k); } fis.close (); // Metoda close () zatvara ulazni tok datoteke koji baca IOException. }}
U gornjem kodu pokušavamo otvoriti, pročitati i prikazati sadržaj datoteke. Može se dogoditi da datoteka nije prisutna, tada će se pojaviti FileNotFoundException što je označeno iznimkom. Ako kontrolirana iznimka nije obrađena, kompajler neće dopustiti da se program kompilira glatko. Prikazat će se pogreška vremena kompajliranja. Dakle, za glatku kompilaciju, provjereni izuzetak mora biti uhvaćen ili deklariran da bude bačen.
Definicija neprovjerene iznimke
Neoznačene Iznimke su one iznimke koje prevoditelj ne provjerava. Kompajler uspješno kompilira program čak i ako se iznimke ne obrađuju kodom. Klasa "Error" i njezine podređene klase, klasa "Runtime" i njezine podklase su neprovjerene iznimke.
Pogledajmo primjer neprovjerene iznimke.
klasa Primjer {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; Sustava (arr [7]); // ArrayIndexOutOfBoundsException. }}
U gore navedenom kodu možete vidjeti da postoji ArrayIndexOutOfBoundsException, jer pokušavam pristupiti elementu koji ne postoji. Budući da je ovo izuzetak, nepostojeća pogreška pri kompilaciji neće se pojaviti, a datoteka će se kompajlirati bez ikakvih pogrešaka. Ali program se neće izvršiti dok se ne riješi iznimka. Dakle, za glatko izvršenje, izuzeci moraju biti uhvaćeni ili deklarirani da se bacaju
Ključne razlike između provjerenog i neprovjerene iznimke
- Provjerene iznimke su u poznavanju kompilatora, dok, Neoznačene iznimke nisu u poznavanju kompilatora.
- Osim klase RuntimeException i Error, sve klase su označene izuzetkom. S druge strane, RuntimeException i Error klase su neprovjerene iznimke.
- Ako se provjerene iznimke ne obrađuju kodom onda se kompajler objektima. S druge strane, ako ne obradimo neoznačene iznimke u kodu, prevodilac se ne protivi.
- Ako se u kodu pojavljuju provjerene iznimke, kôd se neće kompajlirati, iako čak i ako se neprovjerenim iznimkama ne upravlja s kodom, prevodilac i dalje kompilira kod.
Bilješka :
I tijekom checktime-a pojavljuje se i potvrđena ili neprovjerena iznimka. Kompajler ih provjerava ili ne provjerava samo za vrijeme kompajliranja.
Zaključak:
Moraju se obrađivati i označene i neprovjerene iznimke kako bi se program glatko izvršio.