TypeError: исключения должны быть производными от BaseException

Я также видел этот код с этого сайта, и я хотел попробовать его, прежде чем я собираюсь внедрить его в свой проект. Но похоже, что мне трудно понять baseException, так как я не так хорош в python. Вот код:

from threading import Timer
import time
import sys

class Watchdog:
    def __init__(self, timeout, userHandler=None):  # timeout in seconds
        self.timeout = timeout
        self.handler = userHandler if userHandler is not None else self.defaultHandler
        self.timer = Timer(self.timeout, self.handler)
        self.timer.start()


    def reset(self):
        self.timer.cancel()
        self.timer = Timer(self.timeout, self.handler)
        self.timer.start()


    def stop(self):
        self.timer.cancel()


    def defaultHandler(self):
        raise self

watchdog = Watchdog(5)
count = 0
while(count < 4):
    try:
      count = count + 1
      print(count)
      time.sleep(1)
    except Watchdog:
      print("I'm a fancy error message")
watchdog.stop()

Тогда у меня появляется это сообщение об ошибке:

    Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 1180, in run
    self.function(*self.args, **self.kwargs)
  File "/home/pi/wdt.py", line 24, in defaultHandler
    raise self
TypeError: exceptions must derive from BaseException

Я понятия не имею, как я собираюсь это исправить. Я много искал в Интернете, но не нашел решения. Пожалуйста, помогите мне в этом. Спасибо.


person Karl Philipp Sy Fabre    schedule 19.11.2019    source источник
comment
Обычно вам нужен отдельный класс исключений. Может быть, такое имя, как TimeoutError?   -  person Gloweye    schedule 19.11.2019