Exception handling
Daraja: O'rta
Java'da xatolar ikki xil: checked (kompilyator majburlaydi — IOException) va unchecked (RuntimeException — NullPointer, IllegalArgument). try-catch-finally bilan ushlanadi. try-with-resources resursni (fayl, ulanish) avtomatik yopadi. Xatoni yutib yuborish (bo'sh catch) — eng yomon odat.
Tushuntirish
Java'da xatolar ikki xil: checked (kompilyator majburlaydi — IOException) va unchecked (RuntimeException — NullPointer, IllegalArgument). try-catch-finally bilan ushlanadi. try-with-resources resursni (fayl, ulanish) avtomatik yopadi. Xatoni yutib yuborish (bo'sh catch) — eng yomon odat.
Kod misoli
try (var reader = Files.newBufferedReader(Path.of("data.txt"))) {
String qator = reader.readLine();
int son = Integer.parseInt(qator);
} catch (NoSuchFileException e) {
System.err.println("Fayl topilmadi: " + e.getFile());
} catch (NumberFormatException e) {
System.err.println("Son emas: " + e.getMessage());
} catch (IOException e) {
throw new RuntimeException("O'qishda xato", e); // sabab saqlanadi
}
// O'z xatoing
class BalansYetarliEmas extends RuntimeException {
BalansYetarliEmas(String m) { super(m); }
}
Keng tarqalgan xatolar
- `catch (Exception e) {}` — bo'sh blok xatoni yashiradi, keyin sababini topib bo'lmaydi.
- Original xatoni `new RuntimeException(msg)` bilan almashtirib, sababini (cause) uzatmaslik.
Mashqlar
- Fayl o'qiydigan metod yozib, 3 xil xatoni alohida ushla.
- O'z Exception klassingni yozib, biznes qoidasi buzilganda tashla.
Teglar: xato, exception