Python aws lambda函数中的异常处理

Python aws lambda函数中的异常处理,python,python-3.x,amazon-web-services,dns,aws-lambda,Python,Python 3.x,Amazon Web Services,Dns,Aws Lambda,在尝试实现DNSRequest时,我还需要进行一些异常处理,并注意到一些奇怪的事情。以下代码能够捕获DNS请求超时 def lambda_handler(event, context): hostname = "google.de" dnsIpAddresses = event['dnsIpAddresses'] dnsResolver = dns.resolver.Resolver() dnsResolver.lifetime = 1.0 result

在尝试实现
DNSRequest
时,我还需要进行一些异常处理,并注意到一些奇怪的事情。以下代码能够捕获DNS请求超时

def lambda_handler(event, context):

    hostname = "google.de"
    dnsIpAddresses = event['dnsIpAddresses']
    dnsResolver = dns.resolver.Resolver()
    dnsResolver.lifetime = 1.0
    result = {}

    for dnsIpAddress in dnsIpAddresses:
        dnsResolver.nameservers = [dnsIpAddress]

        try:
           myAnswers = dnsResolver.query(hostname, "A")
           print(myAnswers)
           result[dnsIpAddress] = "SUCCESS"
        except dns.resolver.Timeout:
           print("caught Timeout exception")
           result[dnsIpAddress] = "FAILURE"
        except dns.exception.DNSException:
           print("caught DNSException exception")
           result[dnsIpAddress] = "FAILURE"
        except:
           result[dnsIpAddress] = "FAILURE"
           print("caught general exception")

    return result
现在,如果我删除了超时块,并假设会发生超时,则会在DNSException上删除消息

捕获DNSException异常

将永远不会显示

现在,如果我删除了DNSException块,并假设将发生超时,那么消息

捕获一般异常

将永远不会显示

但是超时扩展了DNSException,而DNSException扩展了异常。我期望至少通用的expect块能够工作


我遗漏了什么?

在您的最后一个区块中,尝试将
打印
行置于
结果[dnsIpAddress]=“失败”
我猜要么代码比这里显示的多,要么print语句之前的一行导致了不同的异常