Sobes.tech
Junior

როგორ გავწეროთ შეცდომები სწორად Java-ში?

sobes.tech AI

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

გამონაკლისები უნდა იქნას გადაყრილი, როდესაც ხდება არასათანადო სიტუაცია, რომელიც არღვევს პროგრამის ნორმალურ შესრულებას და საჭიროებს დაუყოვნებლივ დამუშავებას:

ძირითადი პრინციპები:

  • გამოიყენეთ გამონაკლისები შეცდომების შეტყობინებისთვის, არა პროცესის ნაკადის კონტროლისთვის.
  • აირჩიეთ სტანდარტული ბიბლიოთეკიდან ყველაზე შესაბამისი გამონაკლისის ტიპი.
  • შექმენით საკუთარი გამონაკლისის კლასი, როდესაც სტანდარტული არ უზრუნველყოფს საკმარის ინფორმაციას.
  • ჩართეთ გამონაკლისის შეტყობინებაში დეტალური ინფორმაცია შეცდომის მიზეზის შესახებ, მათ შორის კონტექსტი.
  • არ იჭერით გამონაკლისებს, რომლებსაც სწორად ვერ უმკლავდებით. უკეთესია, რომ მათ გადმოაგდოთ ზევით, ზარის სტეკზე.
  • გამოიყენეთ try-with-resources ბლოკები რესურსების ავტომატური დახურვისთვის.
  • ლოგგერეთ გამონაკლისები, რომლებსაც უმკლავდებით ან გადმოაგდებთ ზევით.

სწორი სინტაქსი: throw new MyException("შეცდომის შეტყობინება");

მაგალითი:

// საკუთარი გამონაკლისის შექმნა
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// მეთოდი, რომელიც გადაყრის გამონაკლისს
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("დაშლილობა ნულზე აკრძალულია");
    }
    return a / b;
}

// მეთოდის გამოყენება და გამონაკლისის დამუშავება
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("შედეგი: " + result);
    } catch (InvalidParameterException e) {
        // შეცდომის ლოგგერება
        System.err.println("დაშლის შეცდომა: " + e.getMessage());
        // შესაძლებელია დამატებითი დამუშავება ან გადმოყრა
    }
}

Checked და Unchecked გამონაკლისების განსხვავებები:

ტიპი მემკვიდრეობა საჭიროებს დამუშავებას/დაკავშირებას მაგალითი
Checked Exception (სხვა RuntimeException) დიახ (try-catch ან throws) IOException, SQLException
Unchecked RuntimeException არა (კომპილატორი არ მოითხოვს) NullPointerException, ArrayIndexOutOfBoundsException