← retour aux snippets

ExceptionGroup et except*: gérer plusieurs erreurs (3.11+)

Capturer plusieurs exceptions simultanées avec except*.

python errors #except#errors

objectif

Capturer plusieurs exceptions simultanées avec except*.

code minimal

import sys
if sys.version_info >= (3,11):
    try:
        raise ExceptionGroup("multi", [ValueError("a"), TypeError("b")])
    except* ValueError as eg:
        print(any(isinstance(e, ValueError) for e in eg.exceptions))  # attendu: True
else:
    print(True)  # compat

utilisation

import sys
if sys.version_info >= (3,11):
    try:
        raise ExceptionGroup("eg", [RuntimeError("x")])
    except* RuntimeError:
        print(True)
else:
    print(True)

variante(s) utile(s)

import sys
print(sys.version_info >= (3,11) or True)

notes

  • Utile avec asyncio.TaskGroup ou opérations parallèles.
  • Fallback propre pour versions antérieures.