Junior
Javaда каталарды туура ченелүү менен кантип таштоо керек?
sobes.tech AI
AIден жооп
Эксепшндерди чыгарып жиберүү керек, эгерде программада нормага туура келбеген кырдаал болуп, аны дароо иштетүү талап кылынса.
Негизги принциптер:
- Эксепшндерди каталар жөнүндө кабарлоо үчүн колдон, а не аткаруу агымын көзөмөлдөө үчүн.
- Стандарт китепканадан эң ылайыктуу эксепшн түрүн танда.
- Эгер стандарттык маалымат жетишсиз болсо, өзгөчө эксепшн класстарын түз.
- Эксепшн билдирүүсүнө катанын себеби жана контекст тууралуу толук маалымат кош.
- Эксепшндерди туура эмес иштетсең, кармаба. Жогорудагы стекке жүктөп жиберүү жакшы.
try-with-resourcesблокторун колдон, ресурстарды автоматтык түрдө жабуу үчүн.- Иштеткен же жогоруда жүктөп жиберген эксепшндерди логго жаз.
Туура синтаксис: throw new MyException("Катанын билдирүүсү");
Мисал:
// Өзгөчө эксепшн түзүү
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Эксепшн жүктөгөн метод
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Бөлүү нөлгө болбойт");
}
return a / b;
}
// Методду колдонуу жана эксепшнди иштетүү
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Жыйынтык: " + result);
} catch (InvalidParameterException e) {
// катаны логго жазуу
System.err.println("Бөлүүдө каталар: " + e.getMessage());
// мүмкүн болсо, кошумча иштетүү же жүктөп жиберүү
}
}
Checked жана Unchecked эксепшндердин айырмасы:
| Тип | Мурас | Иштетүү/жарыялоо талап кылынат | Мисал |
|---|---|---|---|
| Checked | Exception (башка RuntimeException) |
Ооба (try-catch же throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Жок (компилятор талап кылбайт) | NullPointerException, ArrayIndexOutOfBoundsException |