Yoxlanmış İstisna və İcra Zamanı İstisnası
İstisnalar proqramın normal gedişatını poza bilən xüsusi hadisələr növüdür. İstisna adı “müstəsna hadisə”dən gəlir. İstisna atmaq, istisna obyektinin yaradılması və onun iş vaxtı sisteminə təhvil verilməsi prosesidir. İş vaxtı sistemi istisna obyektini qəbul etdikdə, onu tərs ardıcıllıqla keçərək (metodların çağırıldığı) zəng yığını daxilində onu idarə edəcək birini tapmağa çalışacaq. İstisna işləyicisi olan bir metod tapsa, iş vaxtı sistemi uğurlu olur. İstisna işləyicisi qeyd olunan istisnanı rəsmi şəkildə idarə edə bilən kod blokudur. İş vaxtı sistemi uyğun bir işləyici tapsa, istisna obyektini işləyiciyə ötürəcək. Buna istisnanı tutmaq deyilir. Ancaq istisnanı idarə etmək mümkün olmadıqda, proqram dayandırılacaq. Java-da istisnalar Throwable sinfindən miras alınır. Yoxlanmış İstisnalar kompilyator tərəfindən idarə olunduğu istisnalardır. İcra zamanı istisnaları kompilyator tərəfindən yoxlanılmayan istisnalar növüdür.
Yoxlanmış İstisna nədir?
Yoxlanan İstisnalar ya java.lang.exception sinifinin obyektləri, ya da onun alt sinifləridir (java.lang. RuntimeException və onun alt sinifləri istisna olmaqla). Yoxlanılan istisnalar tərtib zamanı “yoxlanır”. Bu o deməkdir ki, proqramçı ya bu istisnaları tutmalı və ya atmalı, əks halda kompilyasiya şikayət edər (kompilyator xətasına səbəb olar). Bu səbəbdən bir çox yoxlanılan istisnalar proqramçılara çox yaxşı məlumdur. Məsələn, IOException və onun alt sinifləri istisnalar yoxlanılır və proqramçı fayla daxil olmaq və ya onu dəyişdirməklə məşğul olduqda, kompilyator bütün mümkün IOExceptions-ların proqramçı tərəfindən idarə olunduğuna əmin olmaq üçün yoxlayır.
Runtime İstisnası nədir?
Runtime İstisnaları java.lang. RuntimeException və onun bütün alt siniflərindən ibarətdir. Nəzəri baxımdan, onlar yoxlanılmış istisnalarla eyni məqsədə xidmət edir və yoxlanılmış istisna kimi atıla və ya idarə oluna bilər, lakin onların idarə edilməsi kompilyator tərəfindən tətbiq edilmir. Buna görə də Runtime istisnaları yoxlanılmamış istisnalar ailəsinə aiddir. NullPointerException, NumberFormatEception, ClassCastException və ArrayIndexOutOfBoundsException Java-da ümumi iş vaxtı istisnalarıdır.
Yoxlanmış İstisna və İcra Zamanı İstisnası arasındakı fərq nədir?
Yoxlanan istisnalar və icra vaxtı istisnaları proqramın icrası zamanı arzuolunmaz hallar olsa da, onların fərqli cəhətləri var. Yoxlanmış istisnaların idarə edilməsi kompilyator tərəfindən tətbiq edilir, lakin icra zamanı istisnaları deyil. Buna görə də, kodun tərtib edilməsi üçün yoxlanılan istisnalar atılmalı və ya işlənməlidir, lakin iş vaxtı istisnaları ilə bağlı belə bir tələb yoxdur. Nəticə etibarilə, icra vaxtı istisnaları xətalarla birlikdə yoxlanılmamış istisnalar kateqoriyasına aiddir.
Yoxlanmış istisnalarla çatışmazlıq ondan ibarətdir ki, proqramçı bunu necə edəcəyini bilməsə belə idarə etməlidir. Beləliklə, proqramçı orijinalı bağlamadan sadəcə yeni bir istisna atırsa, orijinal istisnaya aid stek izi itəcək. İş vaxtı istisnalarının lazımlı olduğu yer budur. Bütün iş vaxtı istisnaları bir yerdə idarə oluna biləcəyi üçün proqramçılar daha az kod yaza bilərlər. Digər tərəfdən, yoxlanılan istisnalar tutulmalı olduğundan proqramçı üçün heç bir sürpriz yoxdur. O, həmişə müəyyən bir üsulla hansı yoxlanılan istisnanın atılacağını biləcək. Bunun əksinə olaraq, proqramçının xəbəri olmadan müxtəlif iş vaxtı istisnaları atmaq olar.