aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2022-05-19 11:59:58 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2022-05-19 16:27:28 +0200
commitf2ea5f83d279de106791a33f5ee210d379996ab8 (patch)
tree7cd85ca379a5d111ae5aad31481aa0a6e9a90588
parentd9c3f8b55698a54e04a0d5d117f7ed7aa7ae6a0e (diff)
pySim-shell: catch exceptions from walk() while exporting
When we run the exporter we also get an error summary at the end. However, if walk() throws an eception this stops the exporter immediately and we won't get the summpary. Lets catch exceptions from walk as well so that we are able to end gracefully. Change-Id: I3edc250ef2a84550c5b821a72e207e4d685790a5
-rwxr-xr-xpySim-shell.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/pySim-shell.py b/pySim-shell.py
index 39a0765..8c70c0c 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -669,10 +669,17 @@ class PySimCommands(CommandSet):
context = {'ERR': 0, 'COUNT': 0, 'BAD': [],
'DF_SKIP': 0, 'DF_SKIP_REASON': []}
opts_export = {'JSON': opts.json, 'CREATE': opts.create}
+ exception_str_add = ""
+
if opts.filename:
self.export_ef(opts.filename, context, opts_export)
else:
- self.walk(0, self.export_ef, self.export_df, context, opts_export)
+ try:
+ self.walk(0, self.export_ef, self.export_df, context, opts_export)
+ except Exception as e:
+ print("# Stopping early here due to exception: " + str(e))
+ print("#")
+ exception_str_add = ", also had to stop early due to exception:" + str(e)
self._cmd.poutput(boxed_heading_str("Export summary"))
@@ -687,14 +694,14 @@ class PySimCommands(CommandSet):
self._cmd.poutput("# " + b)
if context['ERR'] and context['DF_SKIP']:
- raise RuntimeError("unable to export %i elementary file(s) and %i dedicated file(s)" % (
- context['ERR'], context['DF_SKIP']))
+ raise RuntimeError("unable to export %i elementary file(s) and %i dedicated file(s)%s" % (
+ context['ERR'], context['DF_SKIP'], exception_str_add))
elif context['ERR']:
raise RuntimeError(
- "unable to export %i elementary file(s)" % context['ERR'])
+ "unable to export %i elementary file(s)%s" % (context['ERR'], exception_str_add))
elif context['DF_SKIP']:
raise RuntimeError(
- "unable to export %i dedicated files(s)" % context['ERR'])
+ "unable to export %i dedicated files(s)%s" % (context['ERR'], exception_str_add))
def do_reset(self, opts):
"""Reset the Card."""