Sobes.tech
Junior

Javaда каталар кандай иштелип чыгат жана алар менен кантип иштеш керек?

sobes.tech AI

AIден жооп

Javaда каталар исключения механизми аркылуу иштетилет. Исключения — бул программаны иштетүүнүн нормалдуу агымын бузган окуялар. Ике түрү бар: Checked Exceptions жана Unchecked Exceptions.

Checked Exceptions:

  • java.lang.Exception классынан мурас алат (RuntimeExceptionдан башка).
  • Алар обязательдуу түрдө иштетилиши керек (try-catch аркылуу) же методтун сигнатурасында көрсөтүлүшү керек (throws аркылуу).
  • Күндөлүк шарттарда пайда боло турган каталар (мисалы, IOException, FileNotFoundException).

Unchecked Exceptions:

  • java.lang.RuntimeException же java.lang.Error классынан мурас алат.
  • Алардын иштетилиши милдеттүү эмес.
  • Логикалык каталарга же иштөө чөйрөсүнүн күтүүсүз абалына байланыштуу каталар (NullPointerException, ArrayIndexOutOfBoundsException).

Исключенияны иштетүү:

try-catch-finally блоктору колдонулат:

  • try: Исключение чыгышы мүмкүн болгон код.
  • catch: try блокто белгилүү бир түрдөгү исключение болсо ишке ашат.
  • finally: Кандай болгон күндө да ишке ашат, ресурстарды бошотуу үчүн колдонулат.
try {
    // Исключение чыгышы мүмкүн болгон код
    int result = 10 / 0; // Мисал: ArithmeticException
} catch (ArithmeticException e) {
    // ArithmeticException иштетүү
    System.err.println("Бөлүү нөлгө менен катасы: " + e.getMessage());
} catch (Exception e) {
    // Башка бардык каталар
    System.err.println("Жалпы ката: " + e.getMessage());
} finally {
    // Ар дайым ишке ашат
    System.out.println("Finally блогу ишке ашты.");
}

Исключенияны өткөрүп берүү:

Мethoд белгилүү бир исключение чыгара алат деп билдириши мүмкүн, throws ключевое слова аркылуу:

public void readFile(String filePath) throws FileNotFoundException, IOException {
    // Файлды окуу коду
    FileReader fr = new FileReader(filePath);
    // Эгер файл табылбаса, FileNotFoundException чыгарыла алат
    // Эгер IO катасы болсо, IOException чыгарыла алат
    // ...
}

Чакырган метод бул исключениени иштетиши керек же өзү да аны өткөрүп бериши керек.

Өзгөчө исключенияларды түзүү:

Exception же RuntimeException классынан мурас алган өзгөчө класстарды түзсө болот:

public class MyCustomException extends Exception {
    public MyCustomException(String message) {
        super(message);
    }
}

Колдонуу:

public void processData(int value) throws MyCustomException {
    if (value < 0) {
        throw new MyCustomException("Маани терс болбошу керек");
    }
    // Маалыматты иштетүү
}

Исключениянын негизги класстары (иерархия):

  • java.lang.Throwable — бардык каталар жана исключениялар үчүн негизги класс
    • java.lang.Error — олуттуу көйгөйлөр үчүн, программалар тарабынан иштетилбейт (мисалы, OutOfMemoryError)
    • java.lang.Exception — программалар иштеткен каталар
      • java.lang.RuntimeException —Unchecked Exceptions
        • NullPointerException
        • ArrayIndexOutOfBoundsException
        • ArithmeticException
        • жана башка
      • Башка Exception класстары (Checked Exceptions)
        • IOException
        • FileNotFoundException
        • SQLException
        • жана башка

Каталар менен иштөө ушул иерархияны түшүнүү, туура түрүн тандоо, try-catch-finally колдонуу жана каталарды логдоо аркылуу ишке ашырылат.