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