Sobes.tech
Middle

Kotlin жана Javaдагы катаалдык айырмасы эмнеде?

sobes.tech AI

AIден жооп

Негизги айырмасы текшерилүүчү (checked) исключенияларды иштетүүдө:

Javaда эки түрдүү исключения бар:

  • Текшерилүүчү (Checked Exception): try-catch блокунда ачык иштетүү же throws сөзү менен методуна билдирүү талап кылынат. Мисалдар: IOException, FileNotFoundException.
  • Текшерилбеген (Unchecked Exception): ачык иштетүүнү талап кылбайт. Мисалдар: RuntimeException жана анын подкласстары, Error.

Kotlinда текшерилүүчү исключениялар жок. Бардык исключениялар негизинен текшерилбеген деп саналат. Бул кодду жөнөкөйлөтөт, анткени try-catch же throws колдонуу керек эмес, рутиналык операциялар үчүн, алар исключение чыгара алат:

Javaда мисал:

// Java
public class FileRead {
    public void readFile() throws IOException { // Мыйзамдуу түрдө билдирүү керек
        BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

Kotlinда мисал:

// Kotlin
import java.io.File

fun readFile() { // throws деп билдирүү керек эмес
    File("file.txt").forEachLine {
        println(it)
    }
}

Текшерилүүчү исключениялар жоктугуна карабастан, Kotlin дагы да алардын чыгышы жана иштетилиши мүмкүн (Java китепканаларынан чыгарыла тургандар сыяктуу), try-catch-finally блоктору аркылуу. Бул учурдагы Java коду менен шайкештикти камсыз кылуу үчүн:

// Kotlin
import java.io.IOException

fun readFileSafe() {
    try {
        readFile() // IOException чыгара турган функцияны чакыруу
    } catch (e: IOException) {
        println("Error reading file: ${e.message}")
    } finally {
        println("File operation finished.")
    }
}

Жыйынтык: Kotlin иштеп чыгуу процессин жеңилдетет, текшерилүүчү исключенияларды милдеттүү түрдө иштетүүнү жокко чыгарып, көбүнесе рунтайм-исключенияларга жана стандарттык каталарды иштетүүгө негизделет.