是的,自定义异常必须继承自Exception类或其任何子类。这是因为Python的异常处理机制依赖于异常类与Exception类的继承关系来确定哪些类是有效的异常。如果一个类没有继承自Exception,那么在尝试使用它作为异常抛出时,Python解释器会抛出一个TypeError,指出该对象不是异常。
建议自己的异常类要继承标准异常类。因为C++中可以抛出任何类型的异常,所以我们的异常类可以不继承自标准异常,但是这样可能会导致程序混乱,尤其是当我们多人协同开发时。