"Java Exception və Error"
Java-da, "exception" və "error" anlayışları proqramın normal işini pozan halları təsvir edir. Hər ikisi "Throwable" sinifinin alt sinifləridir, lakin fərqli mənaları və istifadə sahələri var.
Exception
Exception sinfi proqramın iş zamanı meydana çıxan və tutula bilən (yəni, həll edilə bilən) problemləri təsvir edir. Bu problemlər adətən proqramın məntiqindəki səhvlərdən və ya gözlənilməyən vəziyyətlərdən qaynaqlanır. İki əsas alt sinifə malikdir:
-
Checked Exceptions: Bu növ səhvlər proqramın işləmə vaxtında meydana gələ bilər və onları kodda mütləq işləmək lazımdır. Bu növ səhvlər üçün "try-catch" bloklarından istifadə olunur və ya metodu elan edərkən
throws
açar sözü ilə göstərilməlidir. Məsələn:- IOException
- SQLException
-
Unchecked Exceptions: Bu növ səhvlər "RuntimeException" sinifindən törəyir və kod tərəfindən məcburi işlənməyə ehtiyac yoxdur. Bu səhvlər adətən proqramın məntiqindəki səhvlərdən qaynaqlanır. Məsələn:
- NullPointerException
- ArrayIndexOutOfBoundsException
Nümunə:
public class Main {
public static void main(String[] args) {
try {
int result = divide(10, 0);
} catch (ArithmeticException e) {
System.out.println("ArithmeticException caught: " + e.getMessage());
}
try {
String text = null;
System.out.println(text.length());
} catch (NullPointerException e) {
System.out.println("NullPointerException caught: " + e.getMessage());
}
try {
int[] numbers = new int[3];
System.out.println(numbers[10]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage());
}
}
public static int divide(int a, int b) throws ArithmeticException {
return a / b;
}
}
Bu nümunədə müxtəlif növ "Unchecked Exceptions" işlənir:
ArithmeticException
sıfıra bölmə səhvini göstərir.NullPointerException
null obyektə müraciəti göstərir.ArrayIndexOutOfBoundsException
massiv sərhədlərini aşan indeksi göstərir.
Bu kodda göstərilən səhvlər "Checked Exceptions" deyil, çünki onlar proqramın məntiqindəki səhvləri təmsil edir və işlənməsi məcburi deyil, lakin proqramın çöküşünün qarşısını almaq üçün tövsiyə olunur.
Error
Error sinfi isə ciddi problemləri və proqramın normal gedişatında bərpa edilə bilməyən səhvləri təsvir edir. Bu problemlər adətən JVM (Java Virtual Machine) səviyyəsində baş verir və proqram tərəfindən işlənməsi nəzərdə tutulmur. Məsələn:
- OutOfMemoryError
- StackOverflowError
Bu növ səhvlər üçün "try-catch" blokları adətən istifadə edilmir, çünki bu halların qarşısını almaq və ya bərpa etmək çox çətindir.