graingert · GitHub

Bug description:

import sys
class InvalidFruitException(Exception):
    pass
def eat_fruit(fruit):
    if fruit == "banana":
        raise InvalidFruitException("no herbs please, only fruit")
    if fruit == "rock":
        raise InvalidFruitException("too tough")
def demo_continue_loop():
    food = ["apple", "rock", "orange", "banana"]
    exceptions = []
    try:
        for i, f in enumerate(food):
            try:
                eat_fruit(f)
            except Exception as e:
                e.add_note(f"failed on loop {i=} {f=}")
                exceptions.append(e)
        if exceptions:
            raise ExceptionGroup("multiple errors eating food", exceptions)
    finally:
        del exceptions  # no refcycles please!
def main():
    demo_continue_loop()
    return 0
if __name__ == "__main__":
    sys.exit(main())

here's the output:
https://asciinema.org/a/681263
681263

I'd expect the eat_fruit() parts to be highlighted in red

CPython versions tested on:

3.13, 3.14

Operating systems tested on:

Linux, macOS

This was added in #112730 but it looks like ExceptionGroups were missed

Linked PRs

Read the original on github.com ↗