Sobes.tech
Middle

Дар бораи механизми истисно дар Java гап занед.

sobes.tech AI

Ҷавоб аз AI

Дар Java механизмҳои истисно барои коркарди хатоҳо ва дигар ҳолатҳои истисноӣ, ки дар вақти иҷрои барнома рӯй медиҳанд, истифода мешаванд.

Элементҳои асосии механизмҳои истисно:

  • Истифода (Exception): Объекти, ки ҳодисаро намоиш медиҳад, ки раванди муқаррарии иҷрои барномаро вайрон мекунад.
  • Блокҳои try, catch, finally: Барои коркарди истисноҳо истифода мешаванд.
    • try: Блоки коди, ки дар он мумкин аст истисно рӯй диҳад.
    • catch: Блоки коди, ки иҷро мешавад, агар дар блоки try истиснои муайян рӯй диҳад.
    • finally: Блоки коди, ки ҳамеша иҷро мешавад, новобаста аз он ки истисно рӯй дод ё не. Барои озод кардани захираҳо истифода мешавад.
  • Калидвожа throw: Барои эҷод ва партофтани истиснои равшан истифода мешавад.
  • Калидвожа throws: Дар сигнатураи метод барои эълон кардани намудҳои истисноҳо, ки метод метавонад партояд, истифода мешавад.

Иерархияи истисноҳо дар Java:

  • Throwable: Класси асосӣ барои ҳама истисноҳо ва хатоҳо.
    • Error: Намояндаи масъалаҳои ҷиддӣ, ки барнома одатан наметавонад барқарор кунад (масалан, OutOfMemoryError).
    • Exception: Намояндаи истисноҳо, ки барнома метавонад онҳоро дарёфт ва коркард кунад.
      • RuntimeException (Unchecked Exceptions): Истисноҳое, ки талаб намекунанд коркард ё эълон дар сигнатураи метод (масалан, NullPointerException, ArrayIndexOutOfBoundsException).
      • Checked Exceptions: Истисноҳое, ки бояд ё бо истифода аз блоки try-catch коркард шаванд ё бо throws дар сигнатураи метод эълон шаванд (масалан, IOException, FileNotFoundException).

Маслиҳат барои коркарди истисно:

public class ExceptionExample {

    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Натиҷа: " + result);
        } catch (ArithmeticException e) {
            // Коркарди истиснои ArithmeticException
            System.err.println("Хатогӣ: тақсим ба нуло иҷозатнопазир аст.");
            System.err.println("Тафсилоти истисно: " + e.getMessage());
            e.printStackTrace(); // Намоиши стеки занҷир
        } finally {
            // Ин блок ҳамеша иҷро мешавад
            System.out.println("Блоги finally иҷро шуд.");
        }
    }

    public static int divide(int a, int b) {
        // Мумкин аст истиснои ArithmeticException-ро партояд, агар b = 0
        return a / b;
    }
}

Маслиҳат барои истифодаи throws:

import java.io.FileReader;
import java.io.IOException;

public class ThrowsExample {

    public static void readFile(String filename) throws IOException {
        // Мумкин аст IOException-ро партояд
        FileReader reader = new FileReader(filename);
        // Корҳои минбаъдаи бо файл
    }

    public static void main(String[] args) {
        try {
            readFile("файл_небасте.txt");
        } catch (IOException e) {
            System.err.println("Хатогӣ дар хондани файл: " + e.getMessage());
        }
    }
}