Files
spark/tools/py/core/logging.py
John Colvin c8eb51c303 build (refactor): Move web build scripts to tools/py
Even though they're specific to the web CMakeLists proj, it's good to have all
build scripts in one place
2022-09-21 00:17:31 -05:00

34 lines
813 B
Python

from typing import Callable
def exit_msg(code=0, msg=None):
if msg is not None:
print(msg)
exit(code)
def exec_and_log_error(exec: Callable, name=None, exit_on_err = True, reraise=False):
'''
Executes a callable within a 'try/except' block; if an exception occurs, logs it and optionally
exits the program, and/or re-raises the exception
'''
def fmt_name(name):
if name is None:
return 'anonymous fn'
try:
return str(name)
except:
return 'fn-name-caused-error'
try:
exec()
except Exception as e:
msg = f"Error executing '{fmt_name(name)}': {e}"
if exit_on_err:
exit_msg(1, msg=msg)
else:
print(msg)
if reraise:
raise e