Java-da xətalar necə işlənir və onlarla necə işləmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da səhvlər istisna mexanizmi vasitəsilə idarə olunur. İstisnalar, proqramın normal icrasını pozan hadisələrdir. İki növ istisna var: Checked Exceptions və Unchecked Exceptions.
Checked Exceptions:
java.lang.Exception-dən irsən gəlir (yalnızRuntimeExceptionistisna olmaqla).- Zəruri hallarda (
try-catchilə) idarə olunmalı və ya metodun imzasında (throws) qeyd edilməlidir. - Adətən, normal şəraitdə baş verə biləcək səhvləri təmsil edir (məsələn,
IOException,FileNotFoundException).
Unchecked Exceptions:
java.lang.RuntimeExceptionvə yajava.lang.Error-dən irsən gəlir.- Zəruri deyil, idarə və ya qeyd edilməlidir.
- Tez-tez kodda məntiqi səhvləri və ya icra mühitinin qeyri-stabil vəziyyətlərini göstərir (məsələn,
NullPointerException,ArrayIndexOutOfBoundsException).
İstisnaların idarə olunması:
try-catch-finally blokları istifadə olunur:
try: İstisna yarada biləcək kod.catch:try-də istisna baş verərsə, icra olunan kod.finally: Həmişə icra olunan kod, resursların azad olunması üçün istifadə olunur.
try {
// İstisna yarada biləcək kod
int result = 10 / 0; // Nümunə: ArithmeticException
} catch (ArithmeticException e) {
// ArithmeticException-un idarə olunması
System.err.println("Sıfıra bölmə xətası: " + e.getMessage());
// Xətanın qeydiyyatı, istifadəçiyə mesaj göstərilməsi və s.
} catch (Exception e) {
// Digər istisnaların idarə olunması
System.err.println("Ümumi xəta baş verdi: " + e.getMessage());
} finally {
// Həmişə icra olunan kod
System.out.println("Finally bloku icra olundu.");
}
İstisnaların ötürülməsi:
Metod müəyyən istisnaları yarada bilər və throws açar sözü ilə bildirə bilər:
public void readFile(String filePath) throws FileNotFoundException, IOException {
// Fayl oxuma kodu
FileReader fr = new FileReader(filePath);
// Əgər fayl tapılmazsa, `FileNotFoundException` atıla bilər
// Əgər giriş-çıxış xətası baş verərsə, `IOException` atıla bilər
// ...
}
Çağıran metod ya bu istisnaları idarə etməli (try-catch) və ya da throws ilə qeyd etməlidir.
Öz istisnalarınızı yaratmaq:
Exception və ya RuntimeException-dən irsənən öz istisna sinfləri yarada bilərsiniz:
public class MyCustomException extends Exception {
public MyCustomException(String message) {
super(message);
}
}
İstifadəsi:
public void processData(int value) throws MyCustomException {
if (value < 0) {
throw new MyCustomException("Dəyər mənfi ola bilməz");
}
// Məlumatların işlənməsi
}
Əsas istisna sinifləri (iyerarxiya):
java.lang.Throwable(bütün səhvlər və istisnalar üçün əsas sinif)java.lang.Error(ciddi problemlər üçün, adətən idarə olunmur, məsələn,OutOfMemoryError)java.lang.Exception(programın idarə edə biləcəyi istisnalar)java.lang.RuntimeException(Unchecked Exceptions)NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException- və s.
- Digər
Exceptionalt sinifləri (Checked Exceptions)IOExceptionFileNotFoundExceptionSQLException- və s.
Xətalarla işləmək bu iyerarxiyanı anlamağı, öz istisnalarınızı yaratmaq üçün düzgün tipi seçməyi, try-catch-finally-dən səmərəli istifadə etməyi və xətaları qeydiyyata almağı əhatə edir ki, bu da debugging üçün faydalıdır.