Senior
Aké sú účely tried BaseExceptionGroup a ExceptionGroup v Pythone?
sobes.tech AI
Odpoveď od AI
BaseExceptionGroup a ExceptionGroup sú navrhnuté tak, aby skupinovali viacero výnimiek a zdvíhali ich ako jeden objekt.
BaseExceptionGroup:
- Základná trieda pre všetky skupiny výnimiek.
- Abstraktná, priamo sa nepoužíva.
- Obsahuje spoločnú logiku pre spracovanie skupín výnimiek.
ExceptionGroup:
- Konkrétna trieda na skupinovanie výnimiek, ktoré sú potomkami
Exception. - Najčastejšie používaná trieda na spracovanie viacerých chýb v asynchrónnom kóde alebo pri paralelnom vykonávaní.
- Umožňuje spracovať jednotlivé výnimky v skupine pomocou
except*.
Hlavné vlastnosti:
exceptions: Tuple výnimiek v skupine.message: Správa opisujúca skupinu výnimiek.subgroup(filter): Vytvorí novú skupinu výnimiek obsahujúcu len tie výnimky zo zdrojovej skupiny, ktoré zodpovedajú filtru.split(filter): Rozdelí skupinu na dve: jednu s výnimkami, ktoré zodpovedajú filtru, a druhú so zvyškom. Vráti tuple (matching_group,rest_group).
Príklad použitia s except*:
# Simulácia funkcií, ktoré generujú chyby
def func1():
raise ValueError("Chyba v func1")
def func2():
raise TypeError("Chyba v func2")
# Skupinovanie a spracovanie výnimiek
try:
# Simulácia vykonávania viacerých úloh
errors = []
try:
func1()
except Exception as e:
errors.append(e)
try:
func2()
except Exception as e:
errors.append(e)
if errors:
raise ExceptionGroup("Viacero chýb v procese", errors)
except* ValueError as ve:
# Spracovanie len ValueError
print(f"Zachytený ValueError: {ve}")
except* TypeError as te:
# Spracovanie len TypeError
print(f"Zachytený TypeError: {te}")
except ExceptionGroup as eg:
# Spracovanie zvyšnej (alebo celej) skupiny
print(f"Zachytená zostávajúca skupina výnimiek: {eg}")