Разумно ли в Python перехватывать универсальное исключение, а затем использовать isinstance()
для обнаружения определенного типа исключения и его надлежащей обработки?
В настоящее время я работаю с инструментарием dnspython, который имеет ряд исключений для таких вещей, как тайм-аут, ответ NXDOMAIN и т. Д. Эти исключения являются подклассами dns.exception.DNSException
, поэтому мне интересно, разумно ли это или pythonic, чтобы поймать 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, так что будьте осторожны!