Senior
Python-ში BaseExceptionGroup და ExceptionGroup კლასების მიზნები რა არის?
sobes.tech AI
პასუხი AI-სგან
BaseExceptionGroup და ExceptionGroup განკუთვნილია რამდენიმე გამონაკლისის ჯგუფურად გაერთიანებისა და მათი ერთ ობიექტად ამაღლებისთვის:
BaseExceptionGroup:
- ყველა გამონაკლისის ჯგუფის ძირითადი კლასი.
- აბსტრაქტული, პირდაპირ არ გამოიყენება.
- შეიცავს საერთო ლოგიკას გამონაკლისების ჯგუფების დამუშავებისთვის.
ExceptionGroup:
- კონკრეტული კლასი
Exception-ის მემკვიდრე გამონაკლისების ჯგუფისათვის. - ყველაზე ხშირად გამოიყენება ასინქრონულ კოდში ან პარალელურ შესრულებაში რამდენიმე შეცდომის დამუშავებისთვის.
- საშუალებას აძლევს ჯგუფში ინდივიდუალური გამონაკლისების დამუშავებას
except*-ის საშუალებით.
ძირითადი მახასიათებლები:
exceptions: გამონაკლისების ტოლკეი.message: შეტყობინება, რომელიც აღწერს გამონაკლისების ჯგუფს.subgroup(filter): ქმნის ახალ გამონაკლისების ჯგუფს, რომელიც შეიცავს მხოლოდ იმ გამონაკლისებს, რომლებიც შესაბამისი ფილტრისთვისაა.split(filter): ნაწილებს ხდის ჯგუფს ორ ნაწილად: ერთში შესაბამისი გამონაკლისები, მეორეში დანარჩენები. აბრუნებს ტოლკეის (matching_group,rest_group).
except*-ის გამოყენების მაგალითი:
# შეცდომების გამოწვევა ფუნქციები
def func1():
raise ValueError("შეცდომა func1-ში")
def func2():
raise TypeError("შეცდომა func2-ში")
# შეცდომების ჯგუფირება და დამუშავება
try:
# რამდენიმე დავალების შესრულება模拟
errors = []
try:
func1()
except Exception as e:
errors.append(e)
try:
func2()
except Exception as e:
errors.append(e)
if errors:
raise ExceptionGroup("რამდენიმე შეცდომა პროცესში", errors)
except* ValueError as ve:
# მხოლოდ ValueError-ის დამუშავება
print(f"დაიჭერა ValueError: {ve}")
except* TypeError as te:
# მხოლოდ TypeError-ის დამუშავება
print(f"დაიჭერა TypeError: {te}")
except ExceptionGroup as eg:
# დარჩენილი ან მთელი ჯგუფის დამუშავება
print(f"დაიჭერა დარჩენილი ჯგუფი: {eg}")