static int procB() { urinib ko'ring {
System.out.println(" ichida usul procB()"); 1ni qaytaring ; } nihoyat {
System.out.print(" Nihoyat procB() bloki " ); qaytish 0;
}
}
public static void main(String[] args) { sinash {
procA();
} catch (e istisno) {
e.printStackTrace(); }
Tizim . tashqariga . println ( procB ()); }
}
procA () usulida istisno qilish try blokining muddatidan oldin chiqishiga sabab bo'ladi , lekin finally bo'limi funksiya chiqishdan oldin bajariladi . procB () usuli try blokidagi usulni bajarish bilan tugaydi . qaytish bayonoti , lekin finally blokidagi kod usul chiqishdan oldin bajariladi .
O'z istisnolari
Istisno sinfining pastki sinfi sifatida o'zingizning istisnolaringizni yaratishingiz mumkin va undan keyin qo'ng'iroq usullaridan keyin yuzaga keladigan vaziyatlarni hal qilishda foydalaning.
/* № 9.6 misol: dasturchi tomonidan tashlangan istisnoni tashlaydigan usul: MyBasic . java */ public sinf MyBasic {
statik ikki tomonlama natija ( int i)
uradi MyNotResultException { double d; harakat qilib ko'ring {
agar ((d = 100/i) < 0) yangi MyNotResultException (" my " ni oching istisno "); aks holda d qaytaring ;
} catch (ArithmeticException e) { yangi MyNotResultExceptionni oching(" my istisno "+" yoqilgan asos boshqa istisnolar :", e);
}
}
public static void main(String[] args) { sinash {
double res = natija (-11);// yoki 0 yoki 7;
} catch (MyNotResultException e) { System.out.println(e.toString()); System.out.println(e.getHiddenException());
}
}
}
Agar qiymatni hisoblab bo'lmasa, ArithmeticException tashlanadi , uning ishlovchisi o'z navbatida MyNotResultException ni chiqaradi, bu esa o'z istisnosi sifatida ishlatiladi. Buning uchun ikkita argument kerak. Ulardan biri xato oqimiga chop etilishi mumkin bo'lgan xabar; ikkinchisi bizning istisnomizni tashlashga sabab bo'lgan haqiqiy istisnodir. Ushbu kod boshqa ma'lumotlarni maxsus istisno ichida qanday saqlash mumkinligini ko'rsatadi. Ushbu qat'iylikning afzalligi shundaki, agar chaqirilgan usul MyNotResultException yuborilishining haqiqiy sababini bilmoqchi bo'lsa , u faqat getHiddenException () usulini chaqirishi kerak. Bu chaqirilgan usulga ma'lum bir istisnoni hal qilish kerakmi yoki MyNotResultException bilan ishlash etarlimi yoki yo'qligini hal qilish imkonini beradi .
/* № 9.7 misol: maxsus istisno: MyNotResultException . java */
Do'stlaringiz bilan baham: |