Simplify error handling in subcommand execution

Instead of using a nested try (which repo is plagued with), use a single
try when executing the appropriate subcommand.

Change-Id: I32dbfc010c740c0cc42ef8fb6a83dfe87f87e54a
This commit is contained in:
Conley Owens 2012-11-14 14:18:06 -08:00
parent 98ffba1401
commit 7ba25bedf9

31
main.py
View File

@ -131,32 +131,31 @@ class _Repo(object):
if use_pager: if use_pager:
RunPager(config) RunPager(config)
start = time.time()
try: try:
start = time.time() result = cmd.Execute(copts, cargs)
try:
result = cmd.Execute(copts, cargs)
finally:
elapsed = time.time() - start
hours, remainder = divmod(elapsed, 3600)
minutes, seconds = divmod(remainder, 60)
if gopts.time:
if hours == 0:
print('real\t%dm%.3fs' % (minutes, seconds), file=sys.stderr)
else:
print('real\t%dh%dm%.3fs' % (hours, minutes, seconds),
file=sys.stderr)
except DownloadError as e: except DownloadError as e:
print('error: %s' % str(e), file=sys.stderr) print('error: %s' % str(e), file=sys.stderr)
return 1 result = 1
except ManifestInvalidRevisionError as e: except ManifestInvalidRevisionError as e:
print('error: %s' % str(e), file=sys.stderr) print('error: %s' % str(e), file=sys.stderr)
return 1 result = 1
except NoSuchProjectError as e: except NoSuchProjectError as e:
if e.name: if e.name:
print('error: project %s not found' % e.name, file=sys.stderr) print('error: project %s not found' % e.name, file=sys.stderr)
else: else:
print('error: no project in current directory', file=sys.stderr) print('error: no project in current directory', file=sys.stderr)
return 1 result = 1
finally:
elapsed = time.time() - start
hours, remainder = divmod(elapsed, 3600)
minutes, seconds = divmod(remainder, 60)
if gopts.time:
if hours == 0:
print('real\t%dm%.3fs' % (minutes, seconds), file=sys.stderr)
else:
print('real\t%dh%dm%.3fs' % (hours, minutes, seconds),
file=sys.stderr)
return result return result