Có hợp lý trong Python để bắt ngoại lệ chung, sau đó sử dụng isinstance()
để phát hiện loại ngoại lệ cụ thể để xử lý nó một cách thích hợp?Có hợp lý trong Python để kiểm tra một loại ngoại lệ cụ thể bằng cách sử dụng isinstance không?
Tôi đang chơi xung quanh với bộ công cụ dnspython tại thời điểm này, có một loạt ngoại lệ cho những thứ như thời gian chờ, phản hồi NXDOMAIN, v.v ... Các ngoại lệ này là các lớp con của dns.exception.DNSException
, vì vậy tôi tự hỏi liệu nó có hợp lý hay không, hoặc pythonic, để bắt DNSException
, sau đó kiểm tra ngoại lệ cụ thể với isinstance()
.
ví dụ:
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"
Tôi mới dùng Python nên nhẹ nhàng!
Cảm ơn Sven ... trông đẹp hơn nhiều. – Vortura