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:
Exceptionning 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}")