CodeGym /Kurslar /Java SELF AZ /İstisnaların atılması

İstisnaların atılması

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. throw operatoru

İstisna, sistemə atılmadığı müddətcə və ya artıq catch bloku ilə tutulduğu zaman — sadəcə Exception (daha dəqiq Throwable) sinifindən törəmiş bir obyektdir. İstisna obyekti heç bir xüsusi sehrli xüsusiyyətə malik deyil.

İstisnaların iş prinsipinin bütün məntiqi — sadəcə Java maşınının mühitində istisna atılarkən xüsusi bir davranış ssenarisidir.

Siz həmişə yenidən Java maşınına yalnızca tutduğunuz istisnanı ata bilərsiniz. Bunun üçün throw operatorunu istifadə edin:

throw istisna;

Nümunə:

Kod Ekranda Çıxış
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("İstisna tutuldu");
   throw except;
}
İstisna tutuldu

Bu kodda biz istisnanı tutduq, onu ekrana çap etdik və yenidən atdıq.

Təkrar atılan istisna eyni try blokunun digər catch blokları tərəfindən tuta bilməz.


2. Öz istisnanız

Bu arada, öz istisna obyektinizi yarada bilərsiniz: bu sadəcə Exception növündəki obyekt və ya bu sinifdən irsi götürülmüş sinifdir. Və onu ata bilərsiniz.

Bu düşündüyünüzdən daha sadədir. Məsələn:

Kod Ekrana Çıxış
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("İstisnanı tutduq");
   throw except;
}
İstisnanı tutduq

Yuxarıdakı misalda biz yeni RuntimeException növündə bir istisna obyekti yaratdıq və dərhal onu throw operatoru ilə atdıq.

O dərhal catch bloku tərəfindən tutulacaq, çünki RuntimeException növü Exception növündən irsi götürülüb. catch(Exception except) kodu Exception sinifindən irsi götürülmüş bütün siniflərin istisna obyektlərini tutur.



3. finally açar sözü

Daha bir vacib məqam. Bəzən proqramçıya kodda istisna olub-olmamasından asılı olmayaraq bəzi hərəkətləri yerinə yetirmək lazımdır. Məsələn, kodda faylı yazmaq üçün açırıq, amma açılmış faylı mütləq close() metodunu çağıraraq bağlamaq lazımdır.

try
{
   səhv ola biləcək kod
}
catch(ExceptionType name)
{
   istisnaların emalı kodu
}
finally
{
   hər halda icra olunacaq kod
}

Belə məcburi əməliyyatları yerinə yetirmək üçün try-catch operatoruna daha bir blok əlavə etdilər — finally, və nəticədə try-catch-finally operatoru yarandı. Bu təxminən belə görünür:

Nümunə:

FileInputStream source = null;
try
{
   source = new FileInputStream("c:\\note.txt");
   source.read();
}
catch(Exception except)
{
   System.out.println("İstisna tutuldu");
   throw except;
}
finally
{
   if (source != null)
      source.close();
}

finally blokundakı kod istisna olub-olmamasından asılı olmayaraq hər halda icra olunacaq. Hətta istisna baş veribsə və tutulmayıbsa belə, finally bloku yenə də icra olunacaq.

Bu arada, istisnanı tutmaq istəmirsinizsə, amma finally bloku lazımdırsa, try-catch-finally blokunun qısaldılmış formasından istifadə edin — try-finally. Bu təxminən belə görünür:

try
{
   səhv ola biləcək kod
}
finally
{
   hər halda icra olunacaq kod
}

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION