İstisna və Xəta Arasındakı Fərq

İstisna və Xəta Arasındakı Fərq
İstisna və Xəta Arasındakı Fərq

Video: İstisna və Xəta Arasındakı Fərq

Video: İstisna və Xəta Arasındakı Fərq
Video: MeeGo - забытая система Nokia. 2024, Iyul
Anonim

İstisna və Xəta

Proqram işləyərkən gözlənilməz davranış baş verə bilər. Bunun səbəbi istisnalar və ya səhvlər ola bilər. İstisnalar proqramın normal gedişatını poza biləcək hadisələrdir. Səhvlər düzəldilməz hesab edilə bilən şərtlərdir. İstisnalar əsasən proqramın özü ilə, səhvlər isə proqramın işlədiyi sistemlə əlaqədardır.

İstisna nədir?

İstisna normal proqram axınını poza bilən hadisədir. İ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. İstisna obyekti istisnanın baş verdiyi üsulla yaradılır. İstisna obyekti istisnanın növü və təsviri kimi faydalı məlumatları ehtiva edir. İş 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. Çağırış yığını, istisnanın baş verdiyi metoddan əvvəl çağırılan metodların ardıcıl siyahısıdır. İ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 işləyici tapırsa (yəni istisna növü idarə oluna bilən tipə uyğun gəlir), o, istisna obyektini idarəçiyə ö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. NullPointerException və ArrayIndexOutOfBoundsException Java-da iki ümumi istisnadır.

Xəta nədir?

Səhv bərpa oluna bilməyən bir vəziyyətdir, məsələn, proqram mövcud olandan daha böyük yaddaş tələb edir. Bu xətalar icra zamanı idarə oluna bilməz. Səhv baş verərsə, proqram dayandırılacaq. Java-da səhvlər Throwable sinfindən miras qalır. Səhvlər adətən proqramçının (və ya tətbiqin) tutmağa çalışmamalı olduğu ciddi problemlərə səbəb olur. Səhvlər, sadəcə olaraq, normal şəraitdə baş verməsi gözlənilməyən və buna görə də heç vaxt gözlənilməyən anormal hallardır. Məsələn, OutOfMemoryError, StackOverflowError və ThreadDead belə səhvlərdir. Metodlarda heç vaxt xətalar üçün idarəedicilər olmamalıdır.

İstisna ilə Xəta arasındakı fərq nədir?

Həm səhvlər, həm də istisnalar proqramın icrası zamanı arzuolunmaz baş verir. Bununla belə, onların əsas fərqləri var. İstisnaları proqramçı qabaqcadan görə bilər, halbuki səhvi qabaqcadan görmək çətindir. İstisnalar yoxlanıla və ya silinə bilər. Ancaq səhvlər həmişə yoxlanılmır. İstisnalar adətən proqramçının səbəb olduğu xətanı göstərir. Bununla belə, səhvlər sistem xətası və ya resursun uyğunsuz istifadəsi səbəbindən baş verir. Buna görə də, istisnalar tətbiq səviyyəsində, səhvlərə isə sistem səviyyəsində baxılmalıdır (yalnız mümkünsə). İstisna ilə məşğul olduqdan sonra sizə normal proqram axınına qayıtmağınız təmin edilir. Ancaq bir xəta tutulsa belə, proqramçı ilk növbədə onunla necə davranacağını bilməyə bilər. Ənənəvi xətaların idarə edilməsindən fərqli olaraq, istisnalar səhvlərin idarə edilməsi kodunu adi koddan ayırmağa imkan verir.

Tövsiyə: