Sobes.tech
Senior

Kādi ir Python klases BaseExceptionGroup un ExceptionGroup mērķi?

sobes.tech AI

Atbilde no AI

BaseExceptionGroup un ExceptionGroup paredzētas vairāku izņēmumu grupēšanai un to pacelšanai kā vienam objektam.

BaseExceptionGroup:

  • Visu izņēmumu grupu pamatklase.
  • Abstrakta, tieši netiek izmantota.
  • Satur kopēju loģiku izņēmumu grupu apstrādei.

ExceptionGroup:

  • Konkrēta klase, kas apvieno Exception mantojošus izņēmumus.
  • Visbiežāk izmantotā klase vairākas kļūdas apstrādei asinhronajā kodā vai paralēlajā izpildē.
  • Atļauj apstrādāt atsevišķus izņēmumus grupā ar except*.

Galvenās īpašības:

  • exceptions: izņēmumu kopa.
  • message: ziņojums, kas raksturo izņēmumu grupu.
  • subgroup(filter): izveido jaunu izņēmumu grupu, kas satur tikai tos izņēmumus, kas atbilst filtram.
  • split(filter): sadala grupu divās daļās: vienā ir atbilstošie izņēmumi, otrā - pārējie. Atgriež koplektu (matching_group, rest_group).

except* piemērs:

# Funkcijas, kas izraisa kļūdas

def func1():
    raise ValueError("Kļūda func1")

def func2():
    raise TypeError("Kļūda func2")

# Kļūdu grupēšana un apstrāde
try:
    # Vairāku uzdevumu izpilde
    errors = []
    try:
        func1()
    except Exception as e:
        errors.append(e)
    try:
        func2()
    except Exception as e:
        errors.append(e)

    if errors:
        raise ExceptionGroup("Vairāki kļūdas procesā", errors)

except* ValueError as ve:
    # Tiek apstrādāta tikai ValueError
    print(f"Atklāta ValueError: {ve}")
except* TypeError as te:
    # Tiek apstrādāta tikai TypeError
    print(f"Atklāta TypeError: {te}")
except ExceptionGroup as eg:
    # Apstrādā atlikušās vai visas grupas kļūdas
    print(f"Atklāta atlikusī kļūdu grupa: {eg}")