我正在编写一个小型的Python接口,以通过sysfs读取DS18B20传感器的温度。除了温度之外,还可以读取CRC校验和的状态。为了触发CRC错误,我决定利用
据我所知,
那么,在引发
IOError
:sn = "28-000005589697" # sensor serial number
# file containing information of temperature and if CRC is valid:
fname = "sys/bus/w1/devices/" + sn + "/w1_slave"
with open(fname, 'f') as f:
...
raise IOError("Invalid CRC in {}!".format(sn))
据我所知,
IOError
包含以下成员:message
、filename
、errno
和 strerror
。然而在我的方法中,只使用了 message
。看起来我漏掉了什么。那么,在引发
IOError
异常时,怎样才能使其与其他错误(如磁盘已满或文件未找到等)更好地融合呢?最佳实践是什么?
IOError
,因为它不是一个 I/O 问题(你仍然可以读取数据),而是完整性问题(你读取的数据不正确或已损坏)。相反,应该定义CRCError
或IntegrityError
或其他相关错误类型。 - Stefano Sanfilippo