Python 为什么对` socket.error`的处理方式与';是否从“BaseException”派生?

Python 为什么对` socket.error`的处理方式与';是否从“BaseException”派生?,python,django,exception,redis,Python,Django,Exception,Redis,因此,我已经让Django 2.2.16与redislibrary 3.5.0一起运行 在Redis的连接对象超出范围的某个地方,调用了它们的\uu del\uu,调用Redis库上的disconnect()方法,如下所示: def断开连接(自): “断开与Redis服务器的连接” self.\u parser.on\u disconnect() 如果self.\u sock为无: 返回 尝试: 如果os.getpid()==self.pid: 关机(自插座、插座、关机) self.\u soc

因此,我已经让Django 2.2.16与
redis
library 3.5.0一起运行

在Redis的
连接
对象超出范围的某个地方,调用了它们的
\uu del\uu
,调用Redis库上的
disconnect()
方法,如下所示:

def断开连接(自):
“断开与Redis服务器的连接”
self.\u parser.on\u disconnect()
如果self.\u sock为无:
返回
尝试:
如果os.getpid()==self.pid:
关机(自插座、插座、关机)
self.\u sock.close()
除socket.error外:
通过
self.\u sock=无
现在,当发生这种情况时,会捕获异常:

October 12th 2020, 14:28:30.750 Exception ignored in: <function Connection.__del__ at 0x7fddec766830>
October 12th 2020, 14:28:30.750 Traceback (most recent call last):
October 12th 2020, 14:28:30.750   File "/usr/local/lib/python3.7/site-packages/redis/connection.py", line 537, in __del__
October 12th 2020, 14:28:30.750   File "/usr/local/lib/python3.7/site-packages/redis/connection.py", line 667, in disconnect
October 12th 2020, 14:28:30.750 TypeError: catching classes that do not inherit from BaseException is not allowed
2020年10月12日14:28:30.750异常在以下情况下被忽略:
2020年10月12日14:28:30.750回溯(最近一次通话):
2020年10月12日14:28:30.750文件“/usr/local/lib/python3.7/site packages/redis/connection.py”,第537行,在__
2020年10月12日14:28:30.750文件“/usr/local/lib/python3.7/site packages/redis/connection.py”,第667行,在断开连接中
2020年10月12日,14:28:30.750 TypeError:不允许捕获不从BaseException继承的类
这里disconnect中的第667行指的是这一行:
除了套接字。错误:

现在,
socket
是一个标准库,它的
.error
肯定源于
BaseException
,为什么我会得到这个异常呢