我编写了一个需要进行3次检查的函数,如果其中一个测试失败,它应该返回LookupError类型的异常,但它不起作用。 (* verify_checksum是另一个功能)
def check_datagram(datagram, src_comp, dst_app):
try:
src_comp==datagram[0:16]
except LookupError:
return "Mismatch in src_comp"
try:
dst_app==datagram[40:48]
except LookupError:
return "Mismatch in dst_app"
try:
verify_checksum(datagram)
except False:
return "Wrong checksum"
return True
例如:
输入:
check_datagram("1111000000001111000011111111000001010101101010101111111111111111000000001111111100000000","0000111100001111", "11110000")
预期产出:
"Mismatch in dst_app"
答案 0 :(得分:3)
def check_datagram(datagram, src_comp, dst_app):
if src_comp != datagram[0:16]:
raise LookupError("Mismatch in src_comp")
if dst_app != datagram[40:48]:
raise LookupError("Mismatch in dst_app")
if not verify_checksum(datagram):
raise LookupError("Wrong checksum")
return True # redundant?
答案 1 :(得分:0)
根据NPE的答案,您应该使用try ..除非您在那里使用声明的check_datagram()函数。
#python3
try:
check_datagram(a,b,c)
except LookupError as e:
print(str(e))
允许您从引发的错误中获取消息。