Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2011-01-24 15:57:50 (GMT)
committer Anish Mangal <anish@activitycentral.com>2012-04-27 10:04:45 (GMT)
commitc3c11f7fb556bc89076d16312e8b3970523a35aa (patch)
treebc1b54bcc15e7509cb704c3d15510b2dd4fa72e0
parent90b538a07b7813f8278e61883dae96cb3e12ae2f (diff)
More robust handling of unhandled exceptions
-rw-r--r--src/sugar/feedback.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/sugar/feedback.py b/src/sugar/feedback.py
index 56dacab..770b7a7 100644
--- a/src/sugar/feedback.py
+++ b/src/sugar/feedback.py
@@ -79,6 +79,11 @@ def _send(activity_id, log_path):
log_path if need_log else '')
+def _format_exception(exctype, value, tb):
+ import traceback
+ return ''.join(traceback.format_exception(exctype, value, tb))
+
+
def _excepthook(exctype, value, tb):
global _log_formatter
@@ -89,15 +94,16 @@ def _excepthook(exctype, value, tb):
from IPython.ultraTB import AutoFormattedTB
formatter = AutoFormattedTB(mode='Verbose', color_scheme='NoColor')
_log_formatter = formatter.text
- except ImportError:
- import traceback
- _log_formatter = \
- lambda * args: ''.join(traceback.format_exception(*args))
-
- message = _log_formatter(exctype, value, tb)
- logging.error(message)
-
- trigger('unhandled_exception', need_log=True)
+ except BaseException:
+ _log_formatter = _format_exception
+
+ try:
+ message = _log_formatter(exctype, value, tb)
+ logging.error(message)
+ trigger('unhandled_exception', need_log=True)
+ except BaseException, error:
+ print >>sys.stderr, 'Unhandled %r while processing: %r %r' % \
+ (error, exctype, value)
sys.excepthook = _excepthook