A metodunu çağırarkən istisna baş verərsə, nə edərdiniz?
sobes.tech Süni İntellekt
AI-dan cavab
İstisna növü və biznes məntiqinə görə:
-
İstisna ilə işləmə (try-catch):
catchblokunda istisnayı tutun və uyğun məntiqi həyata keçirin:- Xətanı qeyd edin.
- İstifadəçiyə mesaj göstərin.
- Qurtarmağa və ya əməliyyata davam etməyə çalışın (məsələn, standart dəyər təmin edin).
- İstisnayı daha uyğun bir növə çevirin (Checked-dən Unchecked-ə və ya əksinə).
try { methodA(); } catch (SpecificException e) { // Xətanı qeyd edin logger.error("methodA çağırışında xəta", e); // İstifadəçiyə mesaj göstərə bilərik // displayErrorMessage("Xəta baş verdi"); // və ya bərpa etməyə çalışın // handleRecoveryLogic(); } catch (AnotherException e) { // Digər növ istisna ilə işləmə } finally { // Hər halda işləyəcək kod (resursların bağlanması) // closeResource(); } -
İstisnanı ötürmə (throws): Əgər A metodu istisnanı özü idarə edə bilməzsə, onu
throwsilə çağıran metoda ötürür. Bu metod ya onu idarə etməli, ya da yenidən ötürməlidir.public void methodB() throws SpecificException { methodA(); // methodA SpecificException atə bilər }Bu, istisnanın daha yüksək abstraksiya səviyyəsində işlənməsini tələb etdikdə tətbiq olunur.
-
İstisnanı görməzdən gəlmə (tövsiyə edilmir): İstisnayı tutub, heç nə etməmək. Bu pis təcrübədir, çünki xətaları gizlədir və debugging-i çətinləşdirir. Nadir hallarda, kiçik və əməliyyata təsiri olmayan istisnalar üçün əsaslandırılır.
try { methodA(); } catch (Exception e) { // Görməzdən gəl... çox pis fikir, əksər hallarda } -
İcranı dayandırmaq: Əgər istisna ölümcül və davam etmək mümkün deyilsə, onu yaymağa və ya açıq şəkildə yeni istisna, məsələn RuntimeException, atmağa icazə verilir, bu da icra axını dayandırır.
Seçim kontekstdən, istisna növündən (Checked və ya Unchecked) və tətbiqin səhv idarəetmə siyasətindən asılıdır. Əhəmiyyətlidir ki, istisna idarəetməsi ardıcıl və debugging üçün kifayət qədər məlumat versin.