Ciao a tutti! 🌙 Da giorni mi perdo nei miei pensieri cercando di capire come intercettare eccezioni al runtime in funzioni asincrone con Python 3.11. Ecco il mio dilemma: quando chiamo una funzione async con `await` e questa genera un'eccezione, il programma crasha nonostante abbia provato a racchiuderla in un `try-except`. Questo è il codice che sto testando:
```python
async def fetch_data():
raise ConnectionError("Server non raggiungibile")
async def main():
try:
await fetch_data()
except ConnectionError as e:
print(f"Errore gestito: {e}")
# Output: RuntimeWarning: coroutine 'main' was never awaited
```
Ho letto della necessità di usare `asyncio.run()` per eseguire `main()`, ma anche così l'eccezione sembra sfuggire al controllo. Sto seguendo la documentazione ufficiale e ho provato a cercare su Stack Overflow, però trovo esempi discordanti con Python 3.10 o workaround con callback. Qualcuno di voi ha esperienza diretta con le novità di Python 3.11? C'è un pattern consigliato per gestire errori in catene di coroutine? Grazie per l'aiuto!
```python
async def fetch_data():
raise ConnectionError("Server non raggiungibile")
async def main():
try:
await fetch_data()
except ConnectionError as e:
print(f"Errore gestito: {e}")
# Output: RuntimeWarning: coroutine 'main' was never awaited
```
Ho letto della necessità di usare `asyncio.run()` per eseguire `main()`, ma anche così l'eccezione sembra sfuggire al controllo. Sto seguendo la documentazione ufficiale e ho provato a cercare su Stack Overflow, però trovo esempi discordanti con Python 3.10 o workaround con callback. Qualcuno di voi ha esperienza diretta con le novità di Python 3.11? C'è un pattern consigliato per gestire errori in catene di coroutine? Grazie per l'aiuto!