Sobes.tech
Middle

Java-ში რომელი ტიპის გამონაკლისი ვერ არის დამუშავებული?

sobes.tech AI

პასუხი AI-სგან

შეცდომა.

Java იყოფა გამონაკლისებს (Throwable) სამ ძირითად ტიპად:

  1. შესამოწმებელი გამონაკლისები (Checked Exceptions): მოითხოვს სავალდებულო დამუშავებას ან გამოხატვას მეთოდის სიგნატურაში (throws).
  2. შესამოწმებელი გამონაკლისები (Unchecked Exceptions, Runtime Exceptions): არ მოითხოვს სავალდებულო დამუშავებას. ჩვეულებრივ მიუთითებს პროგრამის ლოგიკაში შეცდომებზე.
  3. შეცდომები (Errors): წარმოადგენენ სერიოზულ პრობლემებს, დაკავშირებულ Java ვირტუალურ მანქანასთან ან სისტემის რესურსებთან. მათ შეუძლებელია დამუშავება აპლიკაციის დონეზე, რადგან ისინი არ ეხება კოდის პრობლემებს.

Error-ის მაგალითები:

  • OutOfMemoryError: Java ვირტუალურ მანქანამ ვერ შეძლო მეხსიერების გამოყოფა.
  • StackOverflowError: Stack-ის გადატვირთვა (ძალიან ღრმა რეკურსია).
  • InternalError: Java Virtual Machine-ის შიდა შეცდომა.

Error-ის დამუშავება try-catch-ით აზრს მოკლებულია, რადგან ეს შეცდომები მიუთითებს მდგომარეობებზე, რომლიდანაც პროგრამა ჩვეულებრივ ვერ შეძლებს წარმატებით აღდგენას. ამის ნაცვლად, Error-ის გაჩენისას, პროგრამა ჩვეულებრივ დასრულდება.

ტექნიკურად შესაძლებელია დაწერო catch (Error e), მაგრამ ასეთი კოდი ითვლება ცუდ პრაქტიკად და არ აძლევს ძირითად პრობლემას გადაწყვეტას.

try {
    // კოდი, რომელიც შეიძლება გამოიწვიოს OutOfMemoryError
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // ეს ბლოკი შესრულდება, მაგრამ ვერ შეძლებთ აღდგენას,
    // რადგან სისტემას არ აქვს საკმარისი მეხსიერება:
    System.err.println("Out of memory! Application will likely terminate.");
    // შემდეგი მოქმედებები აქ უსარგებლოა ან გამოიწვევს SecurityException-ს
} catch (Exception e) {
    // სხვა გამონაკლისების დამუშავება
    e.printStackTrace();
}

QA ავტომატიზაციაში, თუ ტესტის შესრულებისას წარმოიქმნება Error, ეს მეტწილად მიუთითებს ტესტის გარემოს პრობლემაზე, JVM-ის კონფიგურაციის შეცდომაზე ან სერიოზულ დეფექტზე პროგრამაში, რომელიც გამოიწვია კრიტიკული შეცდომა, და არა მოსალოდნელ დამუშავებად გამონაკლისზე. ასეთ სცენარებს სჭირდებათ ძირეული მიზეზის გამოკვლევა, ტესტის კოდიდან გარეთ.