mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
handle class exceptions
This commit is contained in:
parent
cebfa70a79
commit
c7acf2a106
4 changed files with 26 additions and 10 deletions
|
@ -30,7 +30,10 @@ def compile_dir(dir, maxlevels = 10):
|
||||||
print '\n[interrupt]'
|
print '\n[interrupt]'
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
print 'Sorry:', sys.exc_type + ':',
|
if type(sys.exc_type) == type(''):
|
||||||
|
exc_type_name = sys.exc_type
|
||||||
|
else: exc_type_name = sys.exc_type.__name__
|
||||||
|
print 'Sorry:', exc_type_name + ':',
|
||||||
print sys.exc_value
|
print sys.exc_value
|
||||||
elif maxlevels > 0 and \
|
elif maxlevels > 0 and \
|
||||||
name != os.curdir and name != os.pardir and \
|
name != os.curdir and name != os.pardir and \
|
||||||
|
|
|
@ -74,7 +74,10 @@ def browserexec(tb, cmd):
|
||||||
exec(cmd+'\n', globals, locals)
|
exec(cmd+'\n', globals, locals)
|
||||||
except:
|
except:
|
||||||
print '*** Exception:',
|
print '*** Exception:',
|
||||||
print sys.exc_type,
|
if type(sys.exc_type) == type(''):
|
||||||
|
print sys.exc_type,
|
||||||
|
else:
|
||||||
|
print sys.exc_type.__name__,
|
||||||
if sys.exc_value <> None:
|
if sys.exc_value <> None:
|
||||||
print ':', sys.exc_value,
|
print ':', sys.exc_value,
|
||||||
print
|
print
|
||||||
|
|
|
@ -74,7 +74,10 @@ def browserexec(tb, cmd):
|
||||||
exec(cmd+'\n', globals, locals)
|
exec(cmd+'\n', globals, locals)
|
||||||
except:
|
except:
|
||||||
print '*** Exception:',
|
print '*** Exception:',
|
||||||
print sys.exc_type,
|
if type(sys.exc_type) == type(''):
|
||||||
|
print sys.exc_type,
|
||||||
|
else:
|
||||||
|
print sys.exc_type.__name__,
|
||||||
if sys.exc_value <> None:
|
if sys.exc_value <> None:
|
||||||
print ':', sys.exc_value,
|
print ':', sys.exc_value,
|
||||||
print
|
print
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
import linecache
|
import linecache
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
import types
|
||||||
|
|
||||||
def print_tb(tb, limit = None):
|
def print_tb(tb, limit = None):
|
||||||
if limit is None:
|
if limit is None:
|
||||||
|
@ -41,23 +42,29 @@ def extract_tb(tb, limit = None):
|
||||||
n = n+1
|
n = n+1
|
||||||
return list
|
return list
|
||||||
|
|
||||||
def print_exception(type, value, tb, limit = None):
|
def print_exception(etype, value, tb, limit = None):
|
||||||
if tb:
|
if tb:
|
||||||
print 'Traceback (innermost last):'
|
print 'Traceback (innermost last):'
|
||||||
print_tb(tb, limit)
|
print_tb(tb, limit)
|
||||||
if value is None:
|
if type(etype) == types.ClassType:
|
||||||
print type
|
stype = etype.__name__
|
||||||
else:
|
else:
|
||||||
if type is SyntaxError:
|
stype = etype
|
||||||
|
if value is None:
|
||||||
|
print stype
|
||||||
|
else:
|
||||||
|
if etype is SyntaxError:
|
||||||
try:
|
try:
|
||||||
msg, (filename, lineno, offset, line) = value
|
msg, (filename, lineno, offset, line) = value
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if not filename: filename = "<string>"
|
if not filename: filename = "<string>"
|
||||||
print ' File "%s", line %d' % (filename, lineno)
|
print ' File "%s", line %d' % \
|
||||||
|
(filename, lineno)
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(line) and line[i] in string.whitespace:
|
while i < len(line) and \
|
||||||
|
line[i] in string.whitespace:
|
||||||
i = i+1
|
i = i+1
|
||||||
s = ' '
|
s = ' '
|
||||||
print s + string.strip(line)
|
print s + string.strip(line)
|
||||||
|
@ -68,7 +75,7 @@ def print_exception(type, value, tb, limit = None):
|
||||||
s = s + ' '
|
s = s + ' '
|
||||||
print s + '^'
|
print s + '^'
|
||||||
value = msg
|
value = msg
|
||||||
print '%s: %s' % (type, value)
|
print '%s: %s' % (stype, value)
|
||||||
|
|
||||||
def print_exc(limit = None):
|
def print_exc(limit = None):
|
||||||
print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback,
|
print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue