Përjashtim i kontrolluar kundrejt përjashtimit të kohës së ekzekutimit
Përjashtimet janë një lloj i veçantë i ngjarjeve, të cilat mund të prishin rrjedhën normale të programit. Përjashtimi i emrit vjen nga "ngjarja e jashtëzakonshme". Hedhja e një përjashtimi është procesi i krijimit të një objekti përjashtimi dhe dorëzimit të tij në sistemin e ekzekutimit. Kur sistemi i ekzekutimit merr objektin e përjashtimit, ai do të përpiqet të gjejë dikë që ta trajtojë atë brenda grupit të thirrjeve duke e përshkuar atë në rendin e kundërt (në të cilin u thirrën metodat). Sistemi i ekzekutimit është i suksesshëm nëse gjen një metodë me një mbajtës përjashtimi. Trajtuesi i përjashtimit është një bllok kodi që mund të trajtojë zyrtarisht përjashtimin e përmendur. Nëse sistemi i kohës së ekzekutimit gjen një mbajtës të përshtatshëm, ai do t'ia kalojë objektin e përjashtimit mbajtësit. Kjo quhet kapja e përjashtimit. Megjithatë, nëse përjashtimi nuk mund të trajtohet, programi do të përfundojë. Në Java, përjashtimet trashëgojnë nga klasa Throwable. Përjashtimet e zgjedhura janë përjashtime në të cilat trajtimi zbatohet nga përpiluesi. Përjashtimet e kohës së ekzekutimit janë një lloj përjashtimesh, të cilat nuk kontrollohen nga përpiluesi.
Çfarë është një përjashtim i kontrolluar?
Përjashtimet e kontrolluara janë ose objekte të klasës java.lang.exception ose nënklasat e saj (përveç java.lang. RuntimeException dhe nënklasat e saj). Përjashtimet e kontrolluara "kontrollohen" në kohën e përpilimit. Kjo do të thotë që programuesi ose duhet t'i kapë ose t'i hedhë këto përjashtime, ose përndryshe përpiluesi do të ankohej (duke shkaktuar një gabim përpiluesi). Për këtë arsye, shumë përjashtime të kontrolluara janë shumë të njohura për programuesit. Për shembull, IOException dhe nën-klasat e tij janë përjashtime të kontrolluara, dhe sa herë që programuesi merret me aksesimin ose modifikimin e një skedari, përpiluesi kontrollon për t'u siguruar që të gjitha IOExceptions të mundshëm janë kujdesur nga programuesi.
Çfarë është një përjashtim në kohën e ekzekutimit?
Përjashtimet e kohës së ekzekutimit përbëhen nga java.lang. RuntimeException dhe të gjitha nënklasat e tij. Duke folur teorikisht, ato shërbejnë për të njëjtin qëllim si përjashtimet e kontrolluara dhe mund të hidhen ose trajtohen si përjashtim i kontrolluar, por trajtimi i tyre nuk zbatohet nga përpiluesi. Prandaj, përjashtimet Runtime i përkasin familjes së përjashtimeve të pakontrolluara. NullPointerException, NumberFormatEception, ClassCastException dhe ArrayIndexOutOfBoundsException janë përjashtime të zakonshme të kohës së ekzekutimit në Java.
Cili është ndryshimi midis përjashtimit të kontrolluar dhe përjashtimit të kohës së ekzekutimit?
Megjithëse, si përjashtimet e kontrolluara ashtu edhe përjashtimet e kohës së ekzekutimit janë dukuri e padëshiruar gjatë ekzekutimit të një programi, ato kanë dallimet e tyre. Trajtimi i kontrolluar i përjashtimeve zbatohet nga përpiluesi, por përjashtimet e kohës së ekzekutimit nuk janë. Prandaj, përjashtimet e kontrolluara duhet të hidhen ose trajtohen në mënyrë që kodi të kompilohet, por nuk ka një kërkesë të tillë në lidhje me përjashtimet e kohës së ekzekutimit. Rrjedhimisht, përjashtimet e kohës së ekzekutimit i përkasin kategorisë së përjashtimeve të pakontrolluara së bashku me gabimet.
Disavantazh me përjashtimet e kontrolluara është se programuesi duhet ta trajtojë atë edhe nëse ajo nuk di si ta bëjë. Pra, nëse programuesi thjesht hedh një përjashtim të ri pa e mbështjellë origjinalin, gjurma e pirgut që i përket përjashtimit origjinal do të humbasë. Këtu janë të dobishëm përjashtimet e kohës së ekzekutimit. Për shkak se të gjitha përjashtimet e kohës së ekzekutimit mund të trajtohen në një vend të vetëm, kështu që programuesit mund të shkruajnë më pak sasi kodi. Nga ana tjetër, duke qenë se përjashtimet e kontrolluara duhet të kapen, nuk ka asnjë surprizë për programuesin. Ajo gjithmonë do të dijë se cili përjashtim i kontrolluar mund të hidhet me një metodë të caktuar. Ndryshe nga kjo, përjashtime të ndryshme të kohës së ekzekutimit mund të bëhen pa dijeninë e programuesit.