Një përjashtim është një problem që ngrihet gjatë ekzekutimit të një programi. Kur ndodh një përjashtim, rrjedha normale e ekzekutimit ndërpritet dhe programi përfundon në mënyrë jo normale, gjë e cila nuk rekomandohet. Për këtë arsye, përjashtimet duhen mbajtur.
Një përjashtim mund të ndodhë për disa arsye.
Një skenar kur ndodh përjashtimi është dhe skenari mëposhtë:
- Një përdorues jep të dhëna të pavlefshme.
- Një skedar që kërkohet të hapet, nuk gjendet dot.
- Një lidhje në rrjet mund të shkëputet ose Java Virtual Machine ka tejkaluar memorien.
Disa nga këto përjashtime shkaktohen nga gabime të përdoruesit, dhe disa tjera nga gabime të programuesit, të tjera nga probleme të resurseve fizike. Duke u nisur nga kjo, përjashtimet i ndajmë në tre kategori : përjashtime të kontrolluara, përjashtime të pakontrolluara si dhe gabime.
Përjashtimet e kontrolluara
Një përjashtim i kontrolluar është një përjashtim që ndodh gjatë kohës së kompilimit. Këto përjashtime nuk duhen injoruar gjatë kohës së kompilimit. Programatori duhet të shtojë kod që mbajnë këto përjashtime.
Për shembull, në qoftë se përdorni klasën FileReader e cila lexon të dhënat e një skedari, në qoftë se skedari i përcaktuar në konstruktor nuk gjendet, atëherë kompilatori do njoftojë programuesin që ky rast duhet të përfshihet në përjashtim.
import java.io.File; import java.io.FileReader; public class FilenotFound_Demo { public static void main(String args[]) { File file = new File("E://file.txt"); FileReader fr = new FileReader(file); } }
Në qoftë se provoni të kompiloni këtë program, do merrni këtë mesazh nga kompilatori :
C:\>javac FilenotFound_Demo.java FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown FileReader fr = new FileReader(file); ^ 1 error
Vini re: metodat read() dhe close() të FileReader, lëshojnë IOException, prandaj mund të vihet re thjeshtë pse kompilatori na njofton të trajtojmë IOException si FileNotFoundException.
Përjashtimet e pakontrolluara
Një përjashtim i pakontrolluar është një përjashtim që ndodh gjatë kohës së ekzekutimit. Këtu përfshihen probleme logjike ose përdorim jo i saktë i librarive të API. Këto përjashtime nuk gjenden gjatë kompilimit. Për shembull në qoftë se një tabelë është deklaruar më 5 elemente, thirrja e elementit të gjashtë do shkaktojë një përjashtim ArrayInxedOutOfBoundException.
public class Unchecked_Demo { public static void main(String args[]) { int num[] = {1, 2, 3, 4}; System.out.println(num[5]); } }
Kompilimi bëhet me sukses, por gjatë ekzekutimit do merret mesazhi :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Exceptions.Unchecked_Demo.main(Unchecked_Demo.java:8)