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 |