у Јави, изузетак је догађај који се јавља током извршавања програма и ремети нормалан ток инструкција програма. Грешке или грешке које не желимо и које ограничавају нормално извршавање кода нашег програма називају се изузеци . У овом одељку ћемо се фокусирати на врсте изузетака у Јави и разлике између њих.
реплацеалл у стринг јава
Изузеци се могу категорисати на два начина:
- Уграђени изузеци
- Проверен изузетак
- Неозначен изузетак
- Кориснички дефинисани изузеци
Уграђени изузетак
Изузеци који су већ доступни у Јава библиотеке се помињу као уграђени изузетак . Ови изузеци могу да дефинишу ситуацију грешке тако да можемо разумети разлог добијања ове грешке. Може се категорисати у две широке категорије, тј. проверени изузеци и непроверен изузетак .
Проверен изузетак
Проверено изузеци се називају време компајлирања изузеци јер ове изузетке проверава компајлер у време компајлирања. Компајлер осигурава да ли програмер обрађује изузетак или не. Програмер би требало да обради изузетак; у супротном, систем је показао грешку у компилацији.
ЦхецкедЕкцептионЕкампле.јава
import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } }
У горњем коду покушавамо да прочитамо Хелло.ткт датотеку и приказати њене податке или садржај на екрану. Програм избацује следеће изузетке:
- Тхе ФилеИнпутСтреам(име датотеке) конструктор баца ФилеНотФоундЕкцептион то је проверени изузетак.
- Тхе читати() методом ФилеИнпутСтреам разред баца тхе ИОЕкцептион .
- Тхе Близу() метод такође избацује ИОЕкцептион.
Излаз:
Како решити грешку?
У основи постоје два начина на која можемо да решимо ове грешке.
1) Изузеци се јављају у главном методу. Можемо се ослободити ових грешака у компилацији тако што ћемо прогласити изузетак у главном методу користећи бацања Проглашавамо само ИОЕкцептион, а не ФилеНотФоундЕкцептион, због односа дете-родитељ. Класа ИОЕкцептион је родитељска класа ФилеНотФоундЕкцептион, тако да ће овај изузетак аутоматски покривати ИОЕкцептион. Изузетак ћемо прогласити на следећи начин:
комисија за избор особља значење
class Exception{ public static void main(String args[]) throws IOException { ... ... }
Ако компајлирамо и покренемо код, грешке ће нестати и видећемо податке датотеке.
2) Такође можемо да обрадимо ове изузетке користећи покушај да ухватиш Међутим, начин који смо горе користили није тачан. Морамо дати смислену поруку за сваки тип изузетка. На тај начин би било лако разумети грешку. Користићемо блок три-цатцх на следећи начин:
Екцептион.јава
import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } }
Видећемо одговарајућу поруку о грешци 'Фајл није пронађен!' на конзоли јер на тој локацији нема такве датотеке.
Непотврђени изузеци
Тхе неконтролисан изузеци су управо супротни од проверено изузеци. Компајлер неће проверити ове изузетке у време компајлирања. Једноставним речима, ако програм избаци непроверен изузетак, чак и ако га нисмо обрадили или прогласили, програм неће дати грешку при компилацији. Обично се дешава када корисник пружи лоше податке током интеракције са програмом.
Напомена: Класа РунтимеЕкцептион је у стању да реши све непроверене изузетке због односа дете-родитељ.
УнцхецкедЕкцептионЕкампле1.јава
class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } }
У горњем програму поделили смо 35 са 0. Код би био успешно компајлиран, али ће избацити грешку АритхметицЕкцептион током извршавања. Приликом дељења броја са 0 баца се изузетак дељења нулом који је изузетак за поништавање квачице.
Излаз:
УнцхецкедЕкцептион1.јава
class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } }
Излаз:
У горњем коду покушавамо да добијемо елемент који се налази на позицији 7, али дужина низа је 6. Код се успешно компајлира, али избацује АрраиИндекОутОфБоундсЕкцептион током времена извршавања.
Кориснички дефинисан изузетак
Ин Јава , већ имамо неке уграђене класе изузетака као што је ArrayIndexOutOfBoundsException , NullPointerException , и АритхметицЕкцептион . Ови изузеци су ограничени да се активирају у неким унапред дефинисаним условима. У Јави можемо написати сопствену класу изузетака тако што ћемо проширити класу Екцептион. Можемо да избацимо сопствени изузетак за одређени услов користећи кључну реч тхров. За креирање кориснички дефинисаног изузетка, требало би да имамо основно знање о томе тхе покушај да ухватиш блок и бацити кључна реч .
линук преименуј фолдер
Хајде да напишемо а Јава програм и креирајте кориснички дефинисани изузетак.
УсерДефинедЕкцептион.јава
import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } }
Излаз:
Опис:
У горњем коду смо направили две класе, тј. УсерДефинедЕкцептион и НевЕкцептион . Тхе УсерДефинедЕкцептион има наш главни метод, и НевЕкцептион цласс је наша кориснички дефинисана класа изузетака, која се проширује изузетак . У НевЕкцептион класе, креирамо променљиву Икс типа цео број и доделите му вредност у конструктору. Након што тој променљивој доделимо вредност, враћамо поруку о изузетку.
У УсерДефинедЕкцептион класе, додали смо а покушај да ухватиш блокирати. У одељку за покушај, бацамо изузетак, тј. НевЕкцептион и пренети му цео број. Вредност ће бити прослеђена класи НевЕкцептион и вратиће поруку. Хватамо ту поруку у блоку цатцх и приказујемо је на екрану.
јава како претворити стринг у инт
Разлика између провереног и непровереног изузетка
Да не | Проверен изузетак | Неозначен изузетак |
---|---|---|
1. | Ови изузеци се проверавају у време компајлирања. Ови изузеци се такође обрађују у време компајлирања. | Ови изузеци су управо супротни од проверених изузетака. Ови изузеци се не проверавају и не обрађују у време компајлирања. |
2. | Ови изузеци су директне подкласе изузетака, али нису проширене из класе РунтимеЕкцептион. | Они су директне подкласе класе РунтимеЕкцептион. |
3. | Код даје грешку компилације у случају када метода избаци проверени изузетак. Компајлер није у стању сам да обради изузетак. | Код се компајлира без икакве грешке јер изузеци измичу обавештењу компајлера. Ови изузеци су резултат грешака које је направио корисник у логици програмирања. |
4. | Ови изузеци се углавном јављају када је вероватноћа неуспеха превисока. | Ови изузеци се јављају углавном због грешака у програмирању. |
5. | Уобичајени проверени изузеци укључују ИОЕкцептион, ДатаАццессЕкцептион, ИнтерруптедЕкцептион, итд. | Уобичајени непроверени изузеци укључују АритхметицЕкцептион, ИнвалидЦлассЕкцептион, НуллПоинтерЕкцептион, итд. |
6. | Ови изузеци се пропагирају помоћу кључне речи тхровс. | Они се аутоматски пропагирају. |
7. | Потребно је обезбедити блок три-цатцх и три-финалли за руковање провереним изузетком. | У случају необележеног изузетка то није обавезно. |
Грешке или грешке које не желимо и које ограничавају нормално извршавање програма се називају изузеци .
ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions итд долазе у категорију Уграђени изузетак . Понекад уграђени изузеци нису довољни да објасне или опишу одређене ситуације. Да бисмо описали ове ситуације, морамо да креирамо сопствене изузетке тако што ћемо креирати класу изузетака као подкласу Изузетак класа. Ове врсте изузетака долазе у категорију Кориснички дефинисан изузетак .