17. Exception Handling¶
Dastur ishlayotganda ba'zan xatolar yuz berishi mumkin.
Masalan, foydalanuvchi 0 ga bo‘lishni so‘rashi mumkin.
int a = 10;
int b = 0;
int natija = a / b;
Bu kod ishlaganda xato yuz beradi.
Java bunday xatolarni exception deb ataydi.
Exception nima?¶
Exception — dastur ishlayotgan vaqtda yuzaga keladigan muammo.
Masalan:
10 / 0
yoki mavjud bo‘lmagan array elementiga murojaat qilish.
int[] sonlar = {10, 20, 30};
System.out.println(sonlar[5]);
Bu ham xato beradi.
try¶
Xato yuz berishi mumkin bo‘lgan kodni try ichiga yozamiz.
try {
int natija = 10 / 0;
}
Lekin tryning o‘zi yetarli emas.
Xatoni ushlash uchun catch kerak.
catch¶
catch exceptionni ushlaydi.
try {
int natija = 10 / 0;
} catch (Exception e) {
System.out.println("Xatolik yuz berdi.");
}
Natija:
Xatolik yuz berdi.
Dastur xato sababli birdaniga to‘xtab qolmaydi.
To‘liq misol¶
public class Main {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int natija = a / b;
System.out.println(natija);
} catch (Exception e) {
System.out.println("Xatolik yuz berdi.");
}
}
}
Natija:
Xatolik yuz berdi.
Exception nomini ko‘rish¶
Exception haqida ma'lumot olish uchun e.getMessage() ishlatish mumkin.
try {
int natija = 10 / 0;
} catch (Exception e) {
System.out.println(e.getMessage());
}
Java exception haqida ma'lumot beradi.
Maxsus exception turi¶
Har doim Exception yozish shart emas.
Masalan, 0 ga bo‘lishda ArithmeticException yuz beradi.
try {
int natija = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("0 ga bo‘lish mumkin emas.");
}
Natija:
0 ga bo‘lish mumkin emas.
Array exception¶
Masalan:
int[] sonlar = {10, 20, 30};
System.out.println(sonlar[5]);
Arrayda faqat 0, 1, 2 indekslar mavjud.
Shuning uchun exception yuz beradi.
Buni ushlash mumkin:
try {
int[] sonlar = {10, 20, 30};
System.out.println(sonlar[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Bunday indeks mavjud emas.");
}
Natija:
Bunday indeks mavjud emas.
finally¶
Ba'zan exception yuz bersa ham, yuz bermasa ham ma'lum kod ishlashi kerak.
Buning uchun finally ishlatiladi.
try {
System.out.println("Dastur ishlayapti.");
} catch (Exception e) {
System.out.println("Xatolik.");
} finally {
System.out.println("Bu kod har doim ishlaydi.");
}
Natija:
Dastur ishlayapti.
Bu kod har doim ishlaydi.
try, catch, finally¶
Ularni oddiy qilib shunday eslab qoling:
try → xato bo‘lishi mumkin bo‘lgan kod
catch → xatoni ushlaydi
finally → har doim bajariladi
Bir nechta catch¶
Bir nechta turdagi exceptionni alohida ushlash mumkin.
try {
int[] sonlar = {10, 20};
System.out.println(sonlar[5]);
} catch (ArithmeticException e) {
System.out.println("Hisoblash xatosi.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array indeksi xato.");
}
Qaysi exception yuz bersa, mos catch ishlaydi.
Oddiy real misol¶
Foydalanuvchi son kiritadi.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Son kiriting: ");
int son = scanner.nextInt();
System.out.println("Siz kiritgan son: " + son);
} catch (Exception e) {
System.out.println("Iltimos, son kiriting.");
}
}
}
Agar foydalanuvchi:
25
kiritsa:
Siz kiritgan son: 25
Agar:
hello
kiritsa:
Iltimos, son kiriting.
Nima uchun exception handling kerak?¶
Exception handling dasturimizni barqarorroq qiladi.
Masalan, foydalanuvchi noto‘g‘ri ma'lumot kiritsa, dastur butunlay to‘xtab qolmasligi mumkin.
Biz xatoni ushlab, foydalanuvchiga tushunarli xabar beramiz.
Amaliy mashqlar¶
1-mashq¶
10 ni 0 ga bo‘lishga harakat qiling.
try va catch yordamida xatoni ushlang.
2-mashq¶
Array yarating:
int[] sonlar = {10, 20, 30};
Mavjud bo‘lmagan indeksga murojaat qilib ko‘ring.
Exceptionni ushlang.
3-mashq¶
Foydalanuvchidan son olish dasturini yozing.
Agar foydalanuvchi son o‘rniga matn kiritsa, quyidagi xabarni chiqaring:
Iltimos, faqat son kiriting.
4-mashq¶
try, catch va finally ishlatiladigan kichik dastur yozing.
finally ichida:
Dastur tugadi.
chiqsin.
Muhim narsalarni eslab qoling¶
Exception — dastur ishlayotganda yuz beradigan xato.
try — xato bo‘lishi mumkin bo‘lgan kod.
catch — xatoni ushlaydi.
finally — har doim bajariladigan kod.
Masalan:
try {
// xato bo‘lishi mumkin
} catch (Exception e) {
// xatoni boshqarish
} finally {
// har doim bajariladi
}
Exception handling dasturimizni xatolarga chidamli va foydalanuvchi uchun qulayroq qilishga yordam beradi.