一般的な例外をキャッチすることはPythonでは妥当ですか?isinstance()
を使用して、それを適切に処理するために特定のタイプの例外を検出しますか?Pythonでは、isinstanceを使用して特定のタイプの例外をチェックすることは妥当ですか?
私はタイムアウト、NXDOMAINレスポンスなどのための例外の範囲を持っている現時点ではdnspythonツールキットで遊んでいます。これらの例外はdns.exception.DNSException
のサブクラスですので、妥当かどうか、またはDNSException
をキャッチして、isinstance()
で特定の例外をチェックしてください。
try:
answers = dns.resolver.query(args.host)
except dns.exception.DNSException as e:
if isinstance(e, dns.resolver.NXDOMAIN):
print "No such domain %s" % args.host
elif isinstance(e, dns.resolver.Timeout):
print "Timed out while resolving %s" % args.host
else:
print "Unhandled exception"
私はPythonに慣れ親しんでいます。
try:
answers = dns.resolver.query(args.host)
except dns.resolver.NXDOMAIN:
print "No such domain %s" % args.host
except dns.resolver.Timeout:
print "Timed out while resolving %s" % args.host
except dns.exception.DNSException:
print "Unhandled exception"
が句の順序に注意してください:最初に一致する句が取られるので、最後にスーパークラスのチェックを移動するために複数のexcept
節があるものだ
ありがとうございました。 – Vortura