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());
        }
    }
}