Cleanup and consolidate error handling
This commit is contained in:
parent
b9746de52e
commit
53feb12ea0
4 changed files with 21 additions and 18 deletions
|
@ -126,14 +126,7 @@ def main():
|
|||
try:
|
||||
return_val = command(parser, args)
|
||||
except SpackError, e:
|
||||
if spack.debug:
|
||||
# In debug mode, raise with a full stack trace.
|
||||
raise
|
||||
elif e.long_message:
|
||||
tty.die(e.message, e.long_message)
|
||||
else:
|
||||
tty.die(e.message)
|
||||
|
||||
e.die()
|
||||
except KeyboardInterrupt:
|
||||
sys.stderr.write('\n')
|
||||
tty.die("Keyboard interrupt.")
|
||||
|
|
|
@ -280,6 +280,10 @@ def child_fun():
|
|||
# Use os._exit here to avoid raising a SystemExit exception,
|
||||
# which interferes with unit tests.
|
||||
os._exit(0)
|
||||
|
||||
except spack.error.SpackError, e:
|
||||
e.die()
|
||||
|
||||
except:
|
||||
# Child doesn't raise or return to main spack code.
|
||||
# Just runs default exception handler and exits.
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
import os
|
||||
import sys
|
||||
import llnl.util.tty as tty
|
||||
import spack
|
||||
|
||||
class SpackError(Exception):
|
||||
"""This is the superclass for all Spack errors.
|
||||
|
@ -38,6 +42,17 @@ def long_message(self):
|
|||
return self._long_message
|
||||
|
||||
|
||||
def die(self):
|
||||
if spack.debug:
|
||||
sys.excepthook(*sys.exc_info())
|
||||
os._exit(1)
|
||||
else:
|
||||
tty.error(self.message)
|
||||
if self.long_message:
|
||||
print self.long_message
|
||||
os._exit(1)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
msg = self.message
|
||||
if self.long_message:
|
||||
|
|
|
@ -816,17 +816,8 @@ def real_work():
|
|||
except ProcessError, e:
|
||||
# Annotate with location of build log.
|
||||
e.build_log = log_path
|
||||
|
||||
# One of the processes returned an error code.
|
||||
# Suppress detailed stack trace here unless in debug mode
|
||||
if spack.debug:
|
||||
raise e
|
||||
else:
|
||||
tty.error(e)
|
||||
|
||||
# Still need to clean up b/c there was an error.
|
||||
cleanup()
|
||||
os._exit(1)
|
||||
raise e
|
||||
|
||||
except:
|
||||
# other exceptions just clean up and raise.
|
||||
|
|
Loading…
Reference in a new issue