Изузетак вс грешка
Неочекивано понашање ће се појавити када се програм покреће. Ово би могло бити последица изузетака или грешака. Изузетак су догађаји који могу пореметити нормалан ток програма. Грешке су услови који се могу сматрати ненадокнадивим. Изузеци су углавном везани за саму апликацију, док су грешке повезане са системом на којем се програм покреће.
Шта је изузетак?
Изузетак је догађај који може пореметити нормалан ток програма. Назив изузетак долази од „изузетног догађаја“. Бацање изузетака је процес креирања изузетка и предаје га рунтиме систему. Објект изузећа креиран је методом у којем се изузетак догодио. Објект изузећа садржи корисне информације као што су врста и опис изузетака. Када систем извршавања прими објект изузетака, покушаће да нађе некога ко би се руковао унутар скупа позива тако што ће га кретати обрнутим редоследом (у којем су методе позване). Стацк позива је наредјена листа метода која је позвана прије методе у којој се догодио изузетак. Рунтиме систем је успешан ако нађе методу са алатком за обраду изузетака. Руковатељ изузецима је блок кода који званично може да обради наведену изузетак. Ако систем извршавања нађе одговарајући руковатељ (тј. Врста изузетка одговара типу којим се може руковати), он ће објект изузетка прослиједити руковатељу. То се зове хватање изузетака. Међутим, ако се изузетак не може обрадити, програм ће се прекинути. У Јави изузеци наслеђују из „класе која се базира“. НуллПоинтерЕкцептион и АрраиИндекОутОфБоундсЕкцептион су две уобичајене изнимке на Јави.
Шта је грешка?
Грешка је стање које се може сматрати ненадокнадљивим, попут програма који захтева количину меморије већу од доступне. Овим грешкама се не може управљати током извођења. Ако дође до грешке, програм ће се прекинути. У Јави се грешке наслеђују из класе Тхровабле. Грешке обично представљају озбиљне проблеме које програмер (или апликација) не би требало да покуша да ухвати. Грешке су једноставно ненормални услови, од којих се никада не очекује да се јављају у нормалним околностима, и стога се никада не могу предвидјети. На пример, ОутОфМемориЕррор, СтацкОверфловЕррор и ТхреадДеад су такве грешке. Методе никада не би требале имати руковатеље за грешке.
Која је разлика између изузећа и грешке?
И грешке и изузеци су нежељене појаве током извођења програма. Међутим, оне имају кључне разлике. Изузеци могу предвидјети изузеће, док је грешку тешко предвидјети. Изузеци се могу проверити или искључити. Али грешке су увек непроверене. Изузеци обично показују грешку коју је изазвао програмер. Међутим, грешке се јављају због системске грешке или непримјерене употребе ресурса. Због тога треба изузети изузеће на нивоу апликације, док грешке треба водити рачуна о нивоу система (само ако је могуће). Након руковања са изузетком, сигурно се враћате у нормалан ток програма. Али чак и ако се ухвати грешка, програмер можда не зна како то да реши. За разлику од традиционалног поступања са грешкама, изузеци омогућавају одвајање кода за управљање грешкама од регуларног кода.