Senior
Mi a célja a BaseExceptionGroup és ExceptionGroup osztályoknak Pythonban?
sobes.tech MI
Válasz az MI-től
A BaseExceptionGroup és az ExceptionGroup olyan csoportokat hoznak létre, amelyek több kivételt gyűjtenek össze, és ezeket egyetlen objektumként emelik ki.
BaseExceptionGroup:
- Minden kivételcsoport alap osztálya.
- Absztrakt, nem használható közvetlenül.
- Általános logikát tartalmaz a kivételcsoportok kezeléséhez.
ExceptionGroup:
- Konkrét osztály, amely az
Exceptionleszármazott kivételeket csoportosítja. - A leggyakrabban használt osztály több hiba kezelésére aszinkron kódban vagy párhuzamos végrehajtás során.
- Lehetővé teszi az egyes kivételek kezelését a csoporton belül az
except*segítségével.
Fő jellemzők:
exceptions: A csoportban lévő kivételek tuple-je.message: Üzenet, amely leírja a kivételcsoportot.subgroup(filter): Új kivételcsoportot hoz létre, amely csak az eredeti csoportban lévő, a szűrőnek megfelelő kivételeket tartalmazza.split(filter): A csoportot két részre osztja: egyet a szűrőnek megfelelő kivételekkel, egyet a többi kivétellel. Visszaad egy tuple-t (matching_group,rest_group).
Példa az except* használatára:
# Hibát okozó funkciók szimulációja
def func1():
raise ValueError("Hiba func1-ben")
def func2():
raise TypeError("Hiba func2-ben")
# Kivételcsoportosítás és kezelés
try:
# Több feladat végrehajtásának szimulációja
errors = []
try:
func1()
except Exception as e:
errors.append(e)
try:
func2()
except Exception as e:
errors.append(e)
if errors:
raise ExceptionGroup("Több hiba a folyamat során", errors)
except* ValueError as ve:
# Csak a ValueError kezelés
print(f"Elkapott ValueError: {ve}")
except* TypeError as te:
# Csak a TypeError kezelés
print(f"Elkapott TypeError: {te}")
except ExceptionGroup as eg:
# A többi vagy az egész csoport kezelése, ha nincs egyezés
print(f"A fennmaradó kivételcsoport: {eg}")