Разумно ли в Python проверять определенный тип исключения с помощью isinstance?

Разумно ли в 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, так что будьте осторожны!

10
задан Vortura 11 February 2012 в 23:41
поделиться