code: def exceptionHandler(self, excInfo, lastFrame=None):
      if isinstance(excInfo, Exception):
          exc = excInfo
      else:
          exc = excInfo.exc_value
  
      # exceptions raised in non-gui threads must be sent to the gui thread by signal
      isGuiThread = (
          QtCore.QThread.currentThread()
          == QtCore.QCoreApplication.instance().thread()
      )
      if not isGuiThread:
          # note: we are giving the user the ability to modify a frame owned by another thread..
          # expect trouble :)
          self._threadException.emit((excInfo, lastFrame))
          return
  
      if self.catchNextExceptionBtn.isChecked():
          self.catchNextExceptionBtn.setChecked(False)
      elif not self.catchAllExceptionsBtn.isChecked():
          return
  
      self.setException(exc, lastFrame=lastFrame)
  
imports: import sys, re, traceback, threading
  from ..None import exceptionHandling
  from ..Qt import QtWidgets, QtCore
  from ..functions import SignalBlock
  from .stackwidget import StackWidget
label_desc: Use image node_id 14 for calling the ExceptionHandlerWidget obj's underlying member method code with example usage: obj.exceptionHandler(excInfo, lastFrame) without return types