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语句之前的一行导致了不同的异常