gpt4 book ai didi

python - aws-lambda 函数中的异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:01 27 4
gpt4 key购买 nike

在尝试实现 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

现在,如果我删除了 Timeout block ,并假设会发生 DNSException 消息

caught DNSException exception

永远不会显示。

现在,如果我删除了 DNSException block ,并假设会发生超时,消息

caught general exception

永远不会显示。

但是 Timeout 扩展了 DNSException 而 DNSException 扩展了 Exception。我期望至少一般的 expect block 应该起作用。

我错过了什么?

最佳答案

在你的最后一个 block 中,尝试让 print 行出现在 result[dnsIpAddress] = "FAILURE" 之前我的猜测是代码比这里显示的多,或者打印语句之前的行导致不同的异常。

关于python - aws-lambda 函数中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com