Sobes.tech
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}")