我想使用正确的异常类型而不是通用的except Exception
,但是,我不确定如何找到正确的异常类型。这是演示此行为的代码段。不允许传入None
而不是整数,因为它试图将其打包为无符号long。
>>> import struct
>>> try:
... b = struct.pack("L", None)
... except Exception as ex:
... print(f"An exception of type {type(ex).__name__} occurred. {ex.args}")
...
An exception of type error occurred. ('required argument is not an integer',)
从包中捕获异常的推荐方法是什么?还是我坚持检查pack()
的所有参数以确保它们有效?
答案 0 :(得分:2)
您显然正在捕获类型为struct.error
的异常。
如docs中所述:
异常struct.error
在各种场合引发异常;参数是描述错误的字符串。
如果你愿意
print(f"{type(ex)}")
它打印<class 'struct.error'>
还要确认
try:
struct.pack("L", None)
except struct.error as ex:
print("Caught")
打印Caught