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

Mashqlar

Teglar: pdp, modul-03, nazariya

Interaktiv ko'rinish (viktorina, izohlar, tarix)