3-modul · 1-dars: Exceptions
Daraja: O'rta
Exceptions. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Exceptions tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Dastur bajarilishi (runtime) vaqtida yuzaga keladigan, normal oqimni buzadigan xatolik hodisasi. Java-da u obyekt (`Throwable` avlodi) sifatida ifodalanadi.
Noto'g'ri kirish, null obyektga murojaat, 0 ga bo'lish, mavjud bo'lmagan index/fayl, tarmoq uzilishi kabi kutilmagan holatlar sababli.
## Intervyuga tayyorgarlik ### Exception nima? Dastur bajarilishi (runtime) vaqtida yuzaga keladigan, normal oqimni buzadigan xatolik hodisasi. Java-da u obyekt (`Throwable` avlodi) sifatida ifodalanadi.
### Nima sababli exceptionlar yuzaga keladi? Noto'g'ri kirish, null obyektga murojaat, 0 ga bo'lish, mavjud bo'lmagan index/fayl, tarmoq uzilishi kabi kutilmagan holatlar sababli.
### Nima uchun exceptionlar haqida qayg'urish kerak? Ular boshqarilmasa dastur ishdan chiqadi (crash). To'g'ri boshqarish dasturni barqaror va foydalanuvchiga tushunarli qiladi.
### Hamma exception yoki errorlarning otasi (superclass) qaysi? `java.lang.Throwable`. Undan `Error` va `Exception` tarmoqlanadi.
### Error nima va qachon yuzaga keladi? JVM darajasidagi, odatda tuzatib bo'lmaydigan jiddiy muammo (masalan `OutOfMemoryError`, `StackOverflowError`). Dasturchi bularni tutmasligi kerak.
### Exception va error farqi nimada? Exception — dastur tuzatishi mumkin bo'lgan holat (masalan noto'g'ri kirish). Error — JVM/tizim darajasidagi, tuzatib bo'lmaydigan muammo.
### Qancha exception turlari bor? 2 asosiy: Checked (compile vaqtida tekshiriladi) va Unchecked (`RuntimeException` va `Error`).
### Bizga alohida exception class yaratish nimaga kerak? Domenga xos, aniq ma'noli xatoliklarni ifodalash va ushlash uchun (masalan `InsufficientBalanceException`).
### Exception propagation nima? Tutilmagan exception method chaqiruv steki (call stack) bo'ylab yuqoriga — chaqiruvchi methodlarga uzatilishi.
### Exceptionni catching nima? `try-catch` bilan yuzaga kelgan exceptionni ushlab, unga munosabat bildirish.
### Exceptionlar qanday tutiladi? `try` blokiga xatarli kod yoziladi, `catch` bloki mos exception turini ushlaydi, `finally` esa har doim bajariladi.
### Exceptionni tutish nima uchun kerak? Dasturni ishdan chiqarmasdan xatoni boshqarish va tegishli javob (log, xabar, qayta urinish) berish uchun.
### Bir necha Exceptionlar qanday tutiladi? Ketma-ket bir necha `catch` blok bilan, yoki multi-catch orqali: `catch (IOException | SQLException e)`.
### Java 7 da try-catch ga qanday o'zgartirish kiritilgan? Multi-catch (`|` bilan bir nechta turni bitta `catch` da) va try-with-resources qo'shilgan.
### Try-with-resources nima va uning foydali tomoni nimada? Resurslarni (`try(...)` ichida ochilgan) avtomatik yopadigan sintaksis. `finally` da qo'lda `close()` yozish shart emas, resurs sizib ketmaydi.
### Try-with-resources da classlar qaysi interfacedan voris olishi kerak? `AutoCloseable` (yoki uning avlodi `Closeable`).
### Exceptionlarning foydali tomonlari nimada? Xato boshqaruvini asosiy mantiqdan ajratadi, xato ma'lumotini (stack trace) beradi va dasturni barqaror qiladi.
### Exceptionning qanday turlari bor? Checked (`IOException`, `SQLException`), Unchecked/Runtime (`NullPointerException`, `ArithmeticException`) va Error.
### Unchecked exception va checked exception farqlari qanday? Checked — compile vaqtida `throws`/catch talab qilinadi (tashqi omillar). Unchecked (`RuntimeException`) — compile tekshirmaydi, odatda dasturchi xatosi.
### Exceptionlardan foydalanish uchun qanday maslahatlar beriladi? Faqat istisno holatlar uchun ishlating; umumiy `Exception` ni tutmang; exceptionni yutib yubormang (bo'sh catch); resurslarni try-with-resources bilan yoping; aniq turlarni tuting.
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/3-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/api/collections-framework/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
try {
Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Butun son kiriting");
}
Keng tarqalgan xatolar
- Exception ni bo'sh `catch` bilan yutib yuborish - xato yashirin qoladi.
- `Exception` yoki `Throwable` ni umumiy ushlash: kutilmagan xatolar ham yutiladi.
Mashqlar
- O'zingizning exception class ingizni yozib, uni ma'noli xabar bilan tashlang.
- `finally` va try-with-resources ni solishtirib, resurs yopilishini chop etib ko'rsating.
Teglar: pdp, modul-03, nazariya