0

我编写了一个需要进行 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"
4

2 回答 2

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?
于 2012-12-10T20:03:19.747 回答
0

通过 NPE 的回答构建,您应该使用 try..except 在那里您将使用声明的 check_datagram() 函数。

#python3
try:
    check_datagram(a,b,c)
except LookupError as e:
    print(str(e))

这允许您从引发的错误中获取消息。

于 2012-12-13T05:45:21.710 回答