Notice the except* (star-except) syntax. It catches all ValueErrors inside the group without breaking the successful execution of task "B". Ask any developer: "What is the worst part of Python?" Many will answer: Tracebacks that only tell you the line, not the column.
Released in October 2022, Python 3.11 stands as a landmark update for the language. While the world has since moved to 3.12 and 3.13, 3.11 remains the bedrock for many production systems due to its maturity and significant, measurable improvements over Python 3.10. This update focused heavily on two core pillars: execution speed and error clarity .
async def main(): tasks = [risky_task("A", True), risky_task("B", False), risky_task("C", True)] try: results = await gather( tasks, return_exceptions=False) except ValueError as eg: for exc in eg.exceptions: print(f"Handling: exc") Handling: A failed Handling: C failed python 3.11
If you are starting a new project today, target . Your future self will thank you for the speed and clarity. Want to test it yourself? Install via pyenv or the official Python Docker image python:3.11-slim .
ExceptionGroup and except* .
Python 3.11 adds tomllib to the standard library for reading TOML files.
# Python 3.11+ from asyncio import gather, sleep async def risky_task(name, fail): await sleep(0.1) if fail: raise ValueError(f"name failed") return name Notice the except* (star-except) syntax
import tomllib with open("config.toml", "rb") as f: config = tomllib.load(f) print(config["tool"]["poetry"]["name"])