Understanding Exception Types
Exception – proqramın axışını dəyişən hadisədir (event). Exception bir növü bir mexanizmdir, hansı ki onun köməkliyi ilə siz proqramda hər hansı bir gözlənilməz hal, xəta yarananda, baş vermiş xətanın məzmununa uyğun proqramın istiqamətinə istədiyiniz şəkildə yön verə bilərsiniz.
Bütün exceptionlar Throwable
classından törənir*:
error – proqramda nələrinsə “dəhşətli” dərəcədə səhv getdiyini və proqramın onu bərpa etmək gücündə olmadığı anlamına gəlir. Misal üçün disk sürücüsünün “itməsini” göstərmək olar.
runtime exception – RuntimeException
və ondan törəyən subclasslar vasitəsilə tanımlanan exceptionlar hesab edilirlər. Runtime exceptionlar da gözlənilməyən istisnalar hesab edilir, amma errorlar kimi qorxulu deyil. Bu exceptionlar həm də unchecked exceptions adlanır.
chechked exception – Exception
və ondan törəyən bütün subclasslar (RuntimeException
classı istisna olmaqla) bu exceptiona daxildir. Checked exceptionlar əvvəlcədən görülə bilən exceptionlar hesab edilir. Məsələn, olmayan bir faylı oxumağa cəhd etmək.
Bəs nə üçün bu exceptionlar “chechked” adlanır? Çünki java bu exceptionların “handle” və ya “declare” olunmasını tələb edir. “handle” və “declare” ifadələrini biz tez-tez istifadə edəcəyik, ona görə də qısaca izah verək ki, “handle” – try-catch mexanizmi vasitəsilə xətanın yaxalanması, tutulması anlamına gəlir. “Declare” isə exceptionun metodda yenidən elan edilməsidir, yəni bu o anlama gəlir ki, bu metod elan etdiyi exceptionu öz üzərindən atır. Artıq bu metodu istifadə edən digər metodlar həmin exceptionu handle etməlidir, və yaxud onlar da yenidən həmin exceptionu declare edə bilər.
void test1(){ throw new Exception(); // DOES NOT COMPILE } void test2() throws Exception{ throw new Exception(); } void test3(){ throw new RuntimeException(); }
throw
açar sözünü biz yeni exception fırlatmaq üçün istifadə edirik. throws
açar sözü ilə isə elan edirik ki, bu metod exceptionu öz üzərindən onu çağıran metodun üzərinə atır. Yuxarıdakı nümunə ilə bağlı qısa olaraq qeyd etmək olar ki, chechked exception`lar əvvəlcədən göründüyünə görə Java proqramçını məcbur edir ki, onunla bağlı bir tədbir görsün, ya handle etsin, ya da declare. Amma unchecked exception`lar əvvəlcədən təyin edilə bilmir, məsələn, NullPointerException
null
referans üzərindən hər hansı bir üzvü (member) çağırmağa cəhd edən zaman yaranır və bu da istənilən metodda baş verə bilər. Biz əgər buna görə hər yerdə bu exceptionu declare etməli olsaq, kodda qarmaqarışıqlıq yaranacaq. Bu səbəbdən Java runtime exception`ları handle və ya declare etməyi tələb etmir.
Throwing an Exception
Biz yeni exception fırladarkən mesaj olaraq String
parametr də göndərə bilərik və yaxud da default olaraq parametrsiz:
throw new Exception(); throw new Exception("Hi! I am Exception"); throw new RuntimeException(); throw new RuntimeException("Hi! I am RuntimeException");
Aşağıdakı qaydaları bilmək vacibdir**:
[topics lang=az]