code: def excepthook(exc_type, exc_value, tracebackobj):
      
      separator = "-" * 80
      notice = "The following error was triggered:"
  
      now = datetime.now().strftime("%Y-%m-%d, %H:%M:%S")
  
      info = StringIO()
      traceback.print_tb(tracebackobj, None, info)
      info.seek(0)
      info = info.read()
  
      errmsg = f"{exc_type}\t \n{exc_value}"
      sections = [now, separator, errmsg, separator, info]
      msg = "\n".join(sections)
  
      print(''.join(traceback.format_tb(tracebackobj)))
      print('{0}: {1}'.format(exc_type, exc_value))
  
      QtWidgets.QMessageBox.warning(None, notice, traceback.format_exc())
docs: Global function to catch unhandled exceptions.
  
      Parameters
      ----------
      exc_type : str
          exception type
      exc_value : int
          exception value
      tracebackobj : traceback
          traceback object