Дәріс №8
Дәріс мақсаты:
Ерекшелік дегеніміз не?
Ерекшеліктер иерархиясы
Ерекшеліктердің түрлері
try-catch-finally құрылымы
Мысал 1: Қарапайым ArithmeticException
Мысал 2: Бірнеше catch блоктарын қолдану
Мысал 3: Checked Exception – файлмен жұмыс
finally блогының ерекшелігі
Мысал 4: Өз (custom) ерекшелікті жасау
Қауіпсіздік тұрғысынан маңызы
Ерекшеліктермен жұмыс істеудің жақсы тәжірибелері (Best Practices)
66.05K
Category: programmingprogramming

Дәріс 8. Ерекшеліктерді өңдеу

1. Дәріс №8

Тақырыбы: Ерекшеліктерді (Exception) өңдеу

2. Дәріс мақсаты:

•Java тілінде ерекшеліктер (exceptions) ұғымымен таныстыру;
•try-catch-finally механизмін қолдану арқылы қателерді қауіпсіз
өңдеуді үйрету;
•Бағдарлама тұрақтылығын қамтамасыз етудің маңызын түсіндіру.

3. Ерекшелік дегеніміз не?

Ерекшелік (Exception) — бағдарламаның орындалуы кезінде
пайда болатын қате жағдай.
Мысалы:
• Нөлге бөлу (ArithmeticException)
• Индекс шегінен шығу (ArrayIndexOutOfBoundsException)
• Файл табылмау (FileNotFoundException)
• Null мәнге сілтеме жасау (NullPointerException)
Егер мұндай жағдай өңделмесе — бағдарлама тоқтап қалады.
Сондықтан қателерді try-catch арқылы ұстау — қауіпсіз
бағдарламалаудың негізгі бөлігі.

4. Ерекшеліктер иерархиясы

java.lang.Object
↳ java.lang.Throwable
↳ java.lang.Error
↳ java.lang.Exception
↳ Checked Exception
↳ Unchecked Exception (RuntimeException)
Error – жүйелік қателер (мысалы, жады жетпеу). Өңделмейді.
Exception – бағдарламалық қателер. Өңдеуге болады.

5. Ерекшеліктердің түрлері

Түрі
Мысал
Сипаттама
Checked Exception
IOException,
SQLException
Міндетті түрде өңделуі
тиіс (try-catch
немесе throws)
Unchecked Exception
NullPointerException,
ArithmeticException
Бағдарламада
өңделмесе де болады,
бірақ ұсынылмайды
Өз класыңызды жасауға
болады
Бағдарлама
логикасына сай ерекше
жағдайлар
Custom Exception

6. try-catch-finally құрылымы

Негізгі синтаксисі:
try {
// Қатеге әкелуі мүмкін код
} catch (ExceptionType e) {
// Ерекшелікті өңдеу блогы
} finally {
// Міндетті түрде орындалатын код (ресурстарды жабу және
т.б.)
}

7. Мысал 1: Қарапайым ArithmeticException

public class Example1 {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int result = a / b; // Нөлге бөлу қатесі
System.out.println("Нәтиже: " + result);
} catch (ArithmeticException e) {
System.out.println("Қате: Нөлге бөлуге болмайды!");
} finally {
System.out.println("Операция аяқталды.");
}
Нәтиже:
}
Қате: Нөлге бөлуге болмайды!
}
Операция аяқталды.

8. Мысал 2: Бірнеше catch блоктарын қолдану

public class Example2 {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // Индекс шегінен шығу
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Қате: массив индексі шегінен шықты!");
} catch (Exception e) {
System.out.println("Жалпы қате орын алды: " + e.getMessage());
} finally {
System.out.println("Бағдарлама аяқталды.");
}
}
}

9. Мысал 3: Checked Exception – файлмен жұмыс

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Example3 {
public static void main(String[] args) {
try {
File file = new File("data.txt");
FileReader fr = new FileReader(file);
System.out.println("Файл табылды!");
fr.close();
} catch (IOException e) {
System.out.println("Қате: файл табылмады немесе оқуға болмайды.");
} finally {
System.out.println("Файлмен жұмыс аяқталды.");
}
}
}

10. finally блогының ерекшелігі

finally блогы — әрқашан орындалады, тіпті return немесе
break орындалса да.
Ресурстарды жабу үшін қолданылады:
• файл,
• желі қосылымы,
• мәліметтер базасы (JDBC connection) және т.б.

11. Мысал 4: Өз (custom) ерекшелікті жасау

class NegativeNumberException extends Exception {
public NegativeNumberException(String message) {
super(message);
}
}
public class Example4 {
public static void main(String[] args) {
try {
checkPositive(-5);
} catch (NegativeNumberException e) {
System.out.println("Қате: " + e.getMessage());
}
}
static void checkPositive(int num) throws NegativeNumberException {
if (num < 0)
throw new NegativeNumberException("Теріс сан енгізілді!");
else
System.out.println("Сан оң: " + num);
}
}

12. Қауіпсіздік тұрғысынан маңызы

Ерекшеліктерді дұрыс өңдеу бағдарлама тұрақтылығын
арттырады.
Хабарламаларда ішкі ақпаратты (құпия деректерді) шығармау
керек.
Жүйелік қатені (stack trace) пайдаланушыға көрсету қауіп
тудырады.
Әрбір қате жағдай логқа жазылып, кейін талдануы тиіс.

13. Ерекшеліктермен жұмыс істеудің жақсы тәжірибелері (Best Practices)

Тек нақты қателерді ұстаңыз
Exception хабарламаларында құпия деректерді
жария етпеңіз
finally
немесе
try-with-resources
арқылы
ресурстарды жабыңыз
Қолданушыға түсінікті хабарламалар шығарыңыз
Лог жүргізуді ұмытпаңыз (java.util.logging немесе
SLF4J)
English     Русский Rules