aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/client.py7
-rw-r--r--docs/api.rst13
2 files changed, 17 insertions, 3 deletions
diff --git a/discord/client.py b/discord/client.py
index 2e783d09..8b7965bb 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -38,7 +38,7 @@ import json, re, time, copy
from collections import deque
from threading import Timer
from ws4py.client.threadedclient import WebSocketClient
-from sys import platform as sys_platform
+import sys
def _null_event(*args, **kwargs):
pass
@@ -197,7 +197,8 @@ class Client(object):
try:
self.events[event_name](*args, **kwargs)
except Exception as e:
- pass
+ self.events['error'](event_name, *sys.exc_info())
+
def _received_message(self, msg):
response = json.loads(str(msg))
@@ -511,7 +512,7 @@ class Client(object):
'd': {
'token': self.token,
'properties': {
- '$os': sys_platform,
+ '$os': sys.platform,
'$browser': 'discord.py',
'$device': 'discord.py',
'$referrer': '',
diff --git a/docs/api.rst b/docs/api.rst
index 945f34e6..0081f29e 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -30,6 +30,19 @@ All events are 'sandboxed', in that if an exception is thrown while the event is
Called when the client disconnects for whatever reason. Be it error or manually.
+.. function:: on_error(event, type, value, traceback)
+
+ Usually when an event throws an uncaught exception, it is swallowed. If you want to handle
+ the uncaught exceptions for whatever reason, this event is called. If an exception is thrown
+ on this event then it propagates (i.e. it is not swallowed silently).
+
+ The parameters for this event are retrieved through the use of ``sys.exc_info()``.
+
+ :param event: The event name that had the uncaught exception.
+ :param type: The type of exception that was swallowed.
+ :param value: The actual exception that was swallowed.
+ :param traceback: The traceback object representing the traceback of the exception swallowed.
+
.. function:: on_message(message)
Called when a message is created and sent to a server.