Similar presentations:
Дәріс 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)
programming