Sobes.tech
Middle

Kotlin və Java-da istisnalar arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Yoxlamalı (checked) istisnaların idarə olunmasında əsas fərq.

Java-da iki növ istisna var:

  • Yoxlamalı (Checked Exception): açıq şəkildə try-catch blokunda və ya metodun imzasında throws açar sözü ilə bildirilir. Nümunələr: IOException, FileNotFoundException.
  • Yoxlamayan (Unchecked Exception): açıq şəkildə bildirməyə ehtiyac yoxdur. Nümunələr: RuntimeException və onun alt sinifləri, Error.

Kotlin-də yoxlamalı istisnalar yoxdur. Kotlin-də bütün istisnalar, mahiyyət etibarilə, yoxlamayanlardır. Bu, kodu sadələşdirir, çünki try-catch və ya throws istifadə etməyə ehtiyac olmadan, rutin əməliyyatlar üçün istisna atıla bilər.

Java nümunəsi:

// Java
public class FileRead {
    public void readFile() throws IOException { // Zəruridir
        BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

Kotlin nümunəsi:

// Kotlin
import java.io.File

fun readFile() { // throws bildirməyə ehtiyac yoxdur
    File("file.txt").forEachLine {
        println(it)
    }
}

Yoxlamalı istisnaların olmamasına baxmayaraq, Kotlin hələ də istisnaları (Java kitabxanalarından atılanlar kimi) try-catch-finally blokları ilə atıb idarə edə bilər. Bu, mövcud Java kodu ilə uyğunluq üçün edilir.

// Kotlin
import java.io.IOException

fun readFileSafe() {
    try {
        readFile() // IOException atə bilən funksiya çağırışı
    } catch (e: IOException) {
        println("Faylı oxuyarkən xəta: ${e.message}")
    } finally {
        println("Fayl əməliyyatı başa çatdı.")
    }
}

Xülasə: Kotlin inkişafı sadələşdirir, yoxlamalı istisnaları məcburi idarə etmə ehtiyacını aradan qaldırır, daha çox işləmə vaxtı istisnalar və standart səhv idarəetmə mexanizmlərinə güvənir.