mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-03 18:42:43 +00:00
Propagate exceptions when an unhandled error happens
This commit is contained in:
parent
bd9821320e
commit
a42bebe581
@ -45,6 +45,7 @@ class EventType:
|
||||
reconnect = 1
|
||||
resume = 2
|
||||
identify = 3
|
||||
terminate = 4
|
||||
|
||||
class EventItem:
|
||||
__slots__ = ('type', 'shard', 'error')
|
||||
@ -139,6 +140,11 @@ class Shard:
|
||||
except self._handled_exceptions as e:
|
||||
await self._handle_disconnect(e)
|
||||
break
|
||||
except asyncio.CancelledError:
|
||||
break
|
||||
except Exception as e:
|
||||
self._queue.put_nowait(EventItem(EventType.terminate, self, e))
|
||||
break
|
||||
|
||||
async def reidentify(self, exc):
|
||||
self._cancel_task()
|
||||
@ -151,6 +157,10 @@ class Shard:
|
||||
self.ws = await asyncio.wait_for(coro, timeout=60.0)
|
||||
except self._handled_exceptions as e:
|
||||
await self._handle_disconnect(e)
|
||||
except asyncio.CancelledError:
|
||||
return
|
||||
except Exception as e:
|
||||
self._queue.put_nowait(EventItem(EventType.terminate, self, e))
|
||||
else:
|
||||
self.launch()
|
||||
|
||||
@ -161,6 +171,10 @@ class Shard:
|
||||
self.ws = await asyncio.wait_for(coro, timeout=60.0)
|
||||
except self._handled_exceptions as e:
|
||||
await self._handle_disconnect(e)
|
||||
except asyncio.CancelledError:
|
||||
return
|
||||
except Exception as e:
|
||||
self._queue.put_nowait(EventItem(EventType.terminate, self, e))
|
||||
else:
|
||||
self.launch()
|
||||
|
||||
@ -312,6 +326,9 @@ class AutoShardedClient(Client):
|
||||
await item.shard.reidentify(item.error)
|
||||
elif item.type == EventType.reconnect:
|
||||
await item.shard.reconnect()
|
||||
elif item.type == EventType.terminate:
|
||||
await self.close()
|
||||
raise item.error
|
||||
|
||||
async def close(self):
|
||||
"""|coro|
|
||||
|
Loading…
x
Reference in New Issue
Block a user