@@ -384,8 +384,7 @@ def default(self, line):
384
384
sys .stdin = save_stdin
385
385
sys .displayhook = save_displayhook
386
386
except :
387
- exc_info = sys .exc_info ()[:2 ]
388
- self .error (traceback .format_exception_only (* exc_info )[- 1 ].strip ())
387
+ self ._error_exc ()
389
388
390
389
def precmd (self , line ):
391
390
"""Handle alias expansion and ';;' separator."""
@@ -1104,8 +1103,7 @@ def do_debug(self, arg):
1104
1103
try :
1105
1104
sys .call_tracing (p .run , (arg , globals , locals ))
1106
1105
except Exception :
1107
- exc_info = sys .exc_info ()[:2 ]
1108
- self .error (traceback .format_exception_only (* exc_info )[- 1 ].strip ())
1106
+ self ._error_exc ()
1109
1107
self .message ("LEAVING RECURSIVE DEBUGGER" )
1110
1108
sys .settrace (self .trace_dispatch )
1111
1109
self .lastcmd = p .lastcmd
@@ -1163,8 +1161,7 @@ def _getval(self, arg):
1163
1161
try :
1164
1162
return eval (arg , self .curframe .f_globals , self .curframe_locals )
1165
1163
except :
1166
- exc_info = sys .exc_info ()[:2 ]
1167
- self .error (traceback .format_exception_only (* exc_info )[- 1 ].strip ())
1164
+ self ._error_exc ()
1168
1165
raise
1169
1166
1170
1167
def _getval_except (self , arg , frame = None ):
@@ -1178,23 +1175,31 @@ def _getval_except(self, arg, frame=None):
1178
1175
err = traceback .format_exception_only (* exc_info )[- 1 ].strip ()
1179
1176
return _rstr ('** raised %s **' % err )
1180
1177
1178
+ def _error_exc (self ):
1179
+ exc_info = sys .exc_info ()[:2 ]
1180
+ self .error (traceback .format_exception_only (* exc_info )[- 1 ].strip ())
1181
+
1182
+ def _msg_val_func (self , arg , func ):
1183
+ try :
1184
+ val = self ._getval (arg )
1185
+ except :
1186
+ return # _getval() has displayed the error
1187
+ try :
1188
+ self .message (func (val ))
1189
+ except :
1190
+ self ._error_exc ()
1191
+
1181
1192
def do_p (self , arg ):
1182
1193
"""p expression
1183
1194
Print the value of the expression.
1184
1195
"""
1185
- try :
1186
- self .message (repr (self ._getval (arg )))
1187
- except :
1188
- pass
1196
+ self ._msg_val_func (arg , repr )
1189
1197
1190
1198
def do_pp (self , arg ):
1191
1199
"""pp expression
1192
1200
Pretty-print the value of the expression.
1193
1201
"""
1194
- try :
1195
- self .message (pprint .pformat (self ._getval (arg )))
1196
- except :
1197
- pass
1202
+ self ._msg_val_func (arg , pprint .pformat )
1198
1203
1199
1204
complete_print = _complete_expression
1200
1205
complete_p = _complete_expression
0 commit comments