如何返回异常?

时间:2012-12-10 20:00:32

标签: python

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

2 个答案:

答案 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))

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