Sobes.tech
Senior
224

Python'da BaseExceptionGroup va ExceptionGroup sinflarining maqsadlari nima?

AIdan javob

sobes.tech AI

BaseExceptionGroup va ExceptionGroup bir nechta istisnolarni guruhlash va ularni bitta ob'ekt sifatida ko'tarish uchun mo'ljallangan.

BaseExceptionGroup:

  • Barcha istisno guruhlari uchun asosiy sinf.
  • Abstrakt, to'g'ridan-to'g'ri ishlatilmaydi.
  • Istisno guruhlarini boshqarish uchun umumiy mantiqni o'z ichiga oladi.

ExceptionGroup:

  • Exception ning vorislaridan bo'lgan istisnalarni guruhlash uchun aniq sinf.
  • Asinxron kodda yoki parallel bajarishda bir nechta xatolarni boshqarish uchun eng ko'p ishlatiladigan sinf.
  • except* yordamida guruh ichidagi alohida istisnolarni boshqarish imkonini beradi.

Asosiy xususiyatlar:

  • exceptions: Guruhdagi istisnolar tuplami.
  • message: Istisno guruhini tavsiflovchi xabar.
  • subgroup(filter): Filtarga mos keladigan istisnolarni o'z ichiga olgan yangi istisno guruhini yaratadi.
  • split(filter): Guruhni ikkiga bo'ladi: biri filtarga mos keladigan istisnolar bilan, ikkinchisi qolganlar bilan. (matching_group, rest_group) tuplamini qaytaradi.

except* bilan foydalanish misoli:

# Xatoliklar yuzaga keladigan funksiyalarni simulyatsiya qilish
def func1():
    raise ValueError("func1 xatosi")

def func2():
    raise TypeError("func2 xatosi")

# Guruhlash va xatolarni boshqarish
try:
    # Bir nechta vazifani bajarish simulyatsiyasi
    errors = []
    try:
        func1()
    except Exception as e:
        errors.append(e)
    try:
        func2()
    except Exception as e:
        errors.append(e)

    if errors:
        raise ExceptionGroup("Jarayon davomida bir nechta xatolik", errors)

except* ValueError as ve:
    # Faqat ValueError ni boshqarish
    print(f"Qabul qilingan ValueError: {ve}")
except* TypeError as te:
    # Faqat TypeError ni boshqarish
    print(f"Qabul qilingan TypeError: {te}")
except ExceptionGroup as eg:
    # Qolgan yoki butun guruhni boshqarish
    print(f"Qolgan istisno guruhini qabul qilish: {eg}")