“Throwable” е родителският клас на класовете Error and Exception. Класът “RuntimeException” и неговите подкласове, клас “Error” и неговите дъщерни класове са “Непроверени изключения”, докато останалите подкласове от клас “Exception” с изключение на “RuntimeException” са проверените изключения. Основната разлика между провереното и непроверено изключение е, че проверените изключения се проверяват от компилатора, докато компилаторът не проверява неконтролираните изключения .
Нека обсъдим другите разлики между проверени и непроверени изключения с помощта на таблицата за сравнение.
Сравнителна таблица
Основа за сравнение | Проверено изключение | Неконтролирано изключение |
---|---|---|
Основен | Компилаторът проверява провереното изключение. | Компилаторът не проверява изключението Непроверено. |
Клас на изключение | С изключение на класа "RuntimeException" всички детски класове от класа "Exception" и класа "Error" и неговите детски класове са Checked Exception. | Класът "RuntimeException" и неговите детски класове са "Непроверени изключения". |
боравене | Ако не се справим с провереното изключение, тогава компилаторът обекти. | Дори и да не се справим с непровереното изключение, компилаторът не възразява. |
компилация | Програмата не се компилира, ако в програмния код има необработено проверено изключение. | Програмата се компилира успешно, дори и да има необработено неконтролирано изключение в програмния код. |
Дефиниция на Проверено изключение
Проверените изключения са тези изключения, които се проверяват от компилатора за гладкото изпълнение на програмата. Компилаторът проверява дали програмата може да се справи с провереното изключение или не. Ако кодът не може да се справи с изключението, възниква грешка при компилирането. Всички подкласове от клас "Изключение", с изключение на класа RuntimeException, са проверените изключения.
Нека разгледаме провереното изключение с пример.
import java.io. *; class Пример {public static void main (String args []) {FileInputStream fis = null; fis = new FileInputStream ("B: / myfile.txt"); // Този конструктор FileInputStream (File filename) хвърля FileNotFoundException, което е изключено от проверка. int k; while ((k = fis.read ())! = -1) {// Метод read () на класа FileInputStream също хвърля изключено: IOException. System.out.print ((знак) к); } fis.close (); // Методът close () затваря входния поток на файла, който хвърля IOException. }}
В горния код се опитваме да отваряме, четем и показваме съдържанието на файла. Може да се случи, че файлът не присъства, тогава ще се появи FileNotFoundException, което е изключено от проверка. Ако провереното изключение не се обработва, тогава компилаторът няма да позволи програмата да бъде компилирана гладко. Ще се покаже грешка при компилирането. Така че, за гладко компилиране, провереното изключение трябва да бъде уловено или декларирано, че трябва да бъде хвърлено.
Дефиниция на неконтролирано изключение
Непроверени изключения са тези изключения, които не се проверяват от компилатора. Компилаторът компилира програмата успешно дори ако изключенията не се обработват от кода. Класът “Грешка” и неговите дъщерни класове, клас “Runtime” и неговите подкласове са непроверени изключения.
Нека видим пример за непроверено изключение.
class Пример {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (ARR [7]); // ArrayIndexOutOfBoundsException. }}
В горния код можете да видите, че има ArrayIndexOutOfBoundsException, тъй като се опитвам да получа достъп до елемента, който не съществува. Тъй като това е непроверено изключение, грешката при компилиране няма да се появи и файлът ще бъде компилиран без никаква грешка. Но програмата няма да се изпълни, докато не се обработи изключението. Така че, за безпроблемното изпълнение, изключенията трябва да бъдат уловени или обявени за изхвърлени
Ключови разлики между провереното и непроверено изключение
- Проверените изключения са в познаването на компилатора, докато непроверените изключения не са в познаването на компилатора.
- С изключение на RuntimeException и Error клас всички класове са проверени изключение. От друга страна, класовете RuntimeException и Error са непроверени изключения.
- Ако проверените изключения не се обработват от кода, тогава компилаторът обекти. От друга страна, ако не обработваме неконтролирани изключения в кода, компилаторът не възразява.
- Ако в кода се проверяват изключения, кодът няма да се компилира, докато дори ако непроверените изключения не се обработват от кода, компилаторът все още компилира кода.
Забележка :
И двата отменени или непроверени изключения задължително възникват по време на изпълнение. Те се проверяват или не проверяват само от компилатора по време на компилацията.
Заключение:
И двата отменени и непроверени изключения трябва да се обработват, за да се изпълни програмата гладко.