Senior
Мақсадҳои синфҳои BaseExceptionGroup ва ExceptionGroup дар Python чист?
sobes.tech AI
Ҷавоб аз AI
Гурӯҳбандии BaseExceptionGroup ва ExceptionGroup барои гурӯҳбандии чандин истисноҳо ва баланд бардоштани онҳо ҳамчун як объект тарҳрезӣ шудаанд.
BaseExceptionGroup:
- Класс асосӣ барои ҳама гурӯҳҳои истисно.
- Абстрактӣ, мустақиман истифода намешавад.
- Мавзӯъҳои умумиро барои коркарди гурӯҳҳои истисно дар бар мегирад.
ExceptionGroup:
- Класс мушаххас барои гурӯҳбандии истисноҳое, ки аз
Exceptionмерос гирифтаанд. - Класс маъмултарин барои коркарди чанд хатогӣ дар коди асинхронӣ ё дар иҷрои параллелӣ.
- Имкон медиҳад, ки истисноҳои алоҳида дар дохили гурӯҳ бо истифода аз
except*коркард шаванд.
Хусусиятҳои асосӣ:
exceptions: Туфайли истисноҳо дар гурӯҳ.message: Паём, ки гурӯҳи истисноҳоро тавсиф мекунад.subgroup(filter): Гурӯҳи навро месозад, ки танҳо истисноҳое, ки мувофиқ ба филтр мебошанд, дар бар мегирад.split(filter): Гурӯҳро ба ду қисм тақсим мекунад: яке бо истисноҳое, ки мувофиқ ба филтр мебошанд, ва дигаре бо боқимондаҳо. Вай tuple-ро бармегардонад (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}")