Senior
Millised on klasside BaseExceptionGroup ja ExceptionGroup eesmärgid Pythonis?
sobes.tech AI
Vastus AI-lt
BaseExceptionGroup ja ExceptionGroup on mõeldud mitme erandi grupeerimiseks ja nende üleviimiseks ühe objekti vormis.
BaseExceptionGroup:
- Kõigi erandigruppide põhiklass.
- Abstraktne, otse ei kasutata.
- Sisaldab üldist loogikat erandigruppide töötlemiseks.
ExceptionGroup:
- Konkreetne klass, mis ühendab
Exceptionpärilikke erandeid. - Kõige sagedamini kasutatakse mitme vea töötlemiseks asünkroonilises koodis või paralleelkäivituses.
- Annab võimaluse töödelda gruppi kuuluvad üksikud erandid
except*abil.
Peamised omadused:
exceptions: erandite kogum.message: sõnum, mis kirjeldab erandite gruppi.subgroup(filter): loob uue erandite grupi, mis sisaldab ainult filtreid vastavaid erandeid.split(filter): jagab grupi kaheks: ühe, mis sisaldab filtreid vastavaid erandeid, ja teise, mis sisaldab ülejäänuid. Tagastab tupsu (matching_group,rest_group).
except* näide:
# Funktsioonid, mis põhjustavad vigu
def func1():
raise ValueError("Viga func1-s")
def func2():
raise TypeError("Viga func2-s")
# Vigu grupi ja töötlemise
try:
# Mitme ülesande täitmine
errors = []
try:
func1()
except Exception as e:
errors.append(e)
try:
func2()
except Exception as e:
errors.append(e)
if errors:
raise ExceptionGroup("Mitmed vead protsessis", errors)
except* ValueError as ve:
# Töötleb ainult ValueError
print(f"Leiti ValueError: {ve}")
except* TypeError as te:
# Töötleb ainult TypeError
print(f"Leiti TypeError: {te}")
except ExceptionGroup as eg:
# Töötleb ülejäänud või kogu grupi
print(f"Leiti ülejäänud erandite grupp: {eg}")