Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

hgtk: don't suppress exceptions in the dispatcher

Changeset cee66577eee9

Parent bbce43e4ab33

by Henrik Stuart

Changes to one file · Browse files at cee66577eee9 Showing diff from parent bbce43e4ab33 Diff from another changeset...

Change 1 of 2 Show Entire File hgtk Stacked
 
31
32
33
 
34
35
36
 
47
48
49
 
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
32
33
34
35
36
37
 
48
49
50
51
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@@ -31,6 +31,7 @@
 demandimport.enable()  from mercurial import ui  import cStringIO +import traceback    try:   import hggtk.hgtk @@ -47,18 +48,24 @@
  sys.exit(hggtk.hgtk.dispatch(sys.argv[1:]))  else:   mystderr = cStringIO.StringIO() + origstderr = sys.stderr   sys.stderr = mystderr - ret = hggtk.hgtk.dispatch(sys.argv[1:]) - mystderr.seek(0) - for l in mystderr.readlines(): - if l.startswith('Traceback') or l.startswith('TypeError'): - from hggtk.bugreport import run - from hggtk.hgtk import gtkrun - error = 'Recoverable runtime error (stderr):\n'+mystderr.getvalue() - opts = {} - opts['cmd'] = ' '.join(sys.argv[1:]) - opts['error'] = error - opts['nofork'] = True - gtkrun(run, _ui, **opts) - break - sys.exit(ret) + try: + ret = hggtk.hgtk.dispatch(sys.argv[1:]) + mystderr.seek(0) + for l in mystderr.readlines(): + if l.startswith('Traceback') or l.startswith('TypeError'): + from hggtk.bugreport import run + from hggtk.hgtk import gtkrun + error = 'Recoverable runtime error (stderr):\n'+mystderr.getvalue() + opts = {} + opts['cmd'] = ' '.join(sys.argv[1:]) + opts['error'] = error + opts['nofork'] = True + gtkrun(run, _ui, **opts) + break + sys.exit(ret) + except: + if sys.exc_info()[0] not in [SystemExit, KeyboardInterrupt]: + sys.stderr = origstderr + traceback.print_exc()