Source code for coalib.misc.Exceptions
import logging
import traceback
from coalib.misc import Constants
from coalib.output.printers.LOG_LEVEL import LOG_LEVEL
from pkg_resources import VersionConflict
[docs]def get_exitcode(exception, log_printer=None):
if isinstance(exception, KeyboardInterrupt): # Ctrl+C
print('Program terminated by user.')
exitcode = 130
elif isinstance(exception, EOFError): # Ctrl+D
print('Found EOF. Exiting gracefully.')
exitcode = 0
elif isinstance(exception, SystemExit):
exitcode = exception.code
elif isinstance(exception, VersionConflict):
log_message = Constants.VERSION_CONFLICT_MESSAGE % str(exception.req)
log_exception(log_message, exception)
exitcode = 13
elif isinstance(exception, BaseException):
log_exception(Constants.CRASH_MESSAGE, exception)
exitcode = 255
else:
exitcode = 0
return exitcode
[docs]def log_exception(message, exception, log_level=LOG_LEVEL.ERROR):
logging.log(log_level, message)
traceback_str = '\n'.join(
traceback.format_exception(type(exception),
exception,
exception.__traceback__))
logging.info('Exception was:\n' + traceback_str)