From 755164397defc7f9a8566a1f82eaa26bb9f0498f Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 13 Mar 2014 02:19:23 +0000 Subject: [PATCH] [ctml_writer] Improve error reporting Print a more useful traceback for cases where exceptions are raised in ctml_writer. --- interfaces/cython/cantera/ctml_writer.py | 26 ++++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/interfaces/cython/cantera/ctml_writer.py b/interfaces/cython/cantera/ctml_writer.py index 245f759e9..d34b87586 100644 --- a/interfaces/cython/cantera/ctml_writer.py +++ b/interfaces/cython/cantera/ctml_writer.py @@ -2613,23 +2613,27 @@ def convert(filename, outName=None): print(' '* (err.offset+9) + '^') print() sys.exit(3) - except TypeError as err: + except Exception as err: import traceback text = open(filename, 'rU').readlines() tb = traceback.extract_tb(sys.exc_info()[2]) lineno = tb[-1][1] + if tb[-1][0] == filename: + # Error in input file + print('%s on line %i of %s:' % (err.__class__.__name__, lineno, filename)) + print(err) + print('\n| Line |') - print('%s on line %i of %s:' % (err.__class__.__name__, lineno, filename)) - print(err) - print('\n| Line |') - - for i in range(max(lineno-6, 0), - min(lineno+3, len(text))): - if i == lineno-1: - print('> % 4i >' % (i+1), text[i].rstrip()) - else: - print('| % 4i |' % (i+1), text[i].rstrip()) + for i in range(max(lineno-6, 0), + min(lineno+3, len(text))): + if i == lineno-1: + print('> % 4i >' % (i+1), text[i].rstrip()) + else: + print('| % 4i |' % (i+1), text[i].rstrip()) + else: + # Error in ctml_writer or elsewhere + traceback.print_exc() sys.exit(4)