“Тхровабле” је родитељска класа класа Еррор анд Екцептион. Класа “РунтимеЕкцептион” и њене подкласе, класа “Грешка” и њена подређена класа су “Непотврђени изузеци”, док су преостале подкласе класе “Изузетак” осим “РунтимеЕкцептион” означене изузетке. Основна разлика између провереног и непровјереног изузетка је да провјерене изузетке провјерава компајлер, док компајлер не провјерава непровјерене изнимке .
Поразговарајмо о другим разликама између проверених и непровјерених изузетака уз помоћ табеле поређења.
Цомпарисон Цхарт
Основа за поређење | Цхецкед Екцептион | Унцхецкед Екцептион |
---|---|---|
Басиц | Компајлер проверава изузетак. | Компајлер не проверава изузетак Не означен. |
Цласс оф Екцептион | Осим класе "РунтимеЕкцептион", све класе подређене класе "Изузетак", и класа "Грешка" и класе подређених су Цхецкед Екцептион. | Класа "РунтимеЕкцептион" и њена подређена класа су "Непотврђени изузеци". |
Руковање | Ако не обрадимо изузетак, онда компајлер објекте. | Чак и ако не поступамо са изузетком који није означен, компајлер се не противи. |
Компилација | Програм се не компајлира ако постоји необрађени контролисани изузетак у програмском коду. | Програм се успјешно компилира чак и ако у програмском коду постоји необрађена неозначена изнимка. |
Дефиниција Цхецкед Екцептион
Проверени изузеци су они изузетци које компајлер проверава за глатко извођење програма. Компајлер проверава да ли програм може да рукује контролисаним изузетком или не. Ако код није у стању да обради изузетак, јавља се грешка компилације. Све подкласе класе “Изузетак” осим класе РунтимеЕкцептион су проверене изузетке.
Хајде да проучимо изузетак са провереним примером.
импорт јава.ио. *; цласс Примјер {публиц статиц воид маин (Стринг аргс []) {ФилеИнпутСтреам фис = нулл; фис = нев ФилеИнпутСтреам ("Б: /филе.ткт"); // Овај конструктор ФилеИнпутСтреам (Филе филенаме) баца ФилеНотФоундЕкцептион који је означен изузетак. инт к; вхиле ((к = фис.реад ())! = -1) {// Метод реад () из класе ФилеИнпутСтреам такође избацује изузетак: ИОЕкцептион. Систем.оут.принт ((цхар) к); } фис.цлосе (); // Метода цлосе () затвара улазни ток фајла који баца ИОЕкцептион. }}
У горњем коду покушавамо да отворимо, прочитамо и прикажемо садржај датотеке. Може се десити да фајл није присутан, онда ће се појавити ФилеНотФоундЕкцептион што је означено изузетком. Ако контролисани изузетак није обрађен, компајлер неће дозволити да се програм компилира глатко. Показат ће грешку у времену компајлирања. Дакле, за глатку компилацију, провјерени изузетак мора бити ухваћен или декларисан да буде бачен.
Дефиниција непровјереног изузетка
Непотврђени Изузеци су они изузеци које компајлер не провјерава. Компајлер успјешно компилира програм чак и ако се изузеци не обрађују кодом. Класа “Еррор” и њена подређена класа, класа “Рунтиме” и њене подкласе су непровјерени изузеци.
Да видимо пример неконтролисаног изузетка.
цласс Примјер {публиц статиц воид маин (Стринг аргс []) {инт арр [] = {1, 2, 3, 4, 5}; Систем.оут.принтлн (арр [7]); // АрраиИндекОутОфБоундсЕкцептион. }}
У горњем коду можете видети да постоји АрраиИндекОутОфБоундсЕкцептион, јер покушавам да приступим елементу који не постоји. Будући да је ово изузетак који није означен, грешка времена компајлирања се неће појавити, а датотека ће бити компајлирана без грешке. Али програм се неће извршити док се не обради изузетак. Дакле, за глатко извршење, изузеци морају бити ухваћени или декларисани да буду бачени
Кључне разлике између означених и непровјерених изузетака
- Проверене изнимке су у познавању компајлера, док, Непотврђени изузеци нису у познавању компајлера.
- Осим класе РунтимеЕкцептион и Еррор, све класе су означене изузетком. С друге стране, РунтимеЕкцептион и Еррор класе су непровјерене изнимке.
- Ако контролисани изузеци нису обрађени кодом онда компајлер објекте. С друге стране, ако не обрадимо непроверене изузетке у коду, компајлер се не противи.
- Ако се у шифри појављују проверене шифре, код се неће компајлирати, иако чак и ако се неупарени изузеци не обрађују кодом, преводилац још увек компилира код.
Белешка :
И ексклузивно означено и непровјерено се појављује током извршавања. Компајлер их само провјерава или одбацује током компајлирања.
Закључак:
И контролни и непровјерени изузеци морају бити обрађени како би се програм глатко извршио.