handle errors with exceptions instead of function

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
Steven Armstrong 2011-09-23 16:43:25 +02:00
parent 211212e079
commit ea9dc8d60c
1 changed files with 12 additions and 9 deletions

View File

@ -81,9 +81,9 @@ def file_to_list(filename):
return lines return lines
def exit_error(*args): class CdistError(Exception):
log.error(*args) """Base exception class for this project"""
sys.exit(1) pass
class Cdist: class Cdist:
"""Cdist main class to hold arbitrary data""" """Cdist main class to hold arbitrary data"""
@ -185,9 +185,9 @@ class Cdist:
print(script_fd.read()) print(script_fd.read())
script_fd.close() script_fd.close()
exit_error("Command failed (shell): " + " ".join(*args)) raise CdistError("Command failed (shell): " + " ".join(*args))
except OSError as error: except OSError as error:
exit_error(" ".join(*args) + ": " + error.args[1]) raise CdistError(" ".join(*args) + ": " + error.args[1])
def run_or_fail(self, *args, **kargs): def run_or_fail(self, *args, **kargs):
if "remote" in kargs: if "remote" in kargs:
@ -200,9 +200,9 @@ class Cdist:
try: try:
subprocess.check_call(*args, **kargs) subprocess.check_call(*args, **kargs)
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
exit_error("Command failed: " + " ".join(*args)) raise CdistError("Command failed: " + " ".join(*args))
except OSError as error: except OSError as error:
exit_error(" ".join(*args) + ": " + error.args[1]) raise CdistError(" ".join(*args) + ": " + error.args[1])
def remove_remote_dir(self, destination): def remove_remote_dir(self, destination):
@ -368,7 +368,7 @@ class Cdist:
"""Run global explorers""" """Run global explorers"""
explorers = self.list_global_explorers() explorers = self.list_global_explorers()
if(len(explorers) == 0): if(len(explorers) == 0):
exit_error("No explorers found in", self.global_explorer_dir) raise CdistError("No explorers found in", self.global_explorer_dir)
self.transfer_global_explorers() self.transfer_global_explorers()
for explorer in explorers: for explorer in explorers:
@ -674,7 +674,7 @@ def emulator():
try: try:
os.makedirs(param_out_dir, exist_ok=True) os.makedirs(param_out_dir, exist_ok=True)
except OSError as error: except OSError as error:
exit_error(param_out_dir + ": " + error.args[1]) raise CdistError(param_out_dir + ": " + error.args[1])
# Record parameter # Record parameter
params = vars(args) params = vars(args)
@ -790,3 +790,6 @@ if __name__ == "__main__":
commandline() commandline()
except KeyboardInterrupt: except KeyboardInterrupt:
sys.exit(0) sys.exit(0)
except CdistError as e:
log.error(e)
sys.exit(1)