From d71da062bd346fd771568dcea78b2cbec898c520 Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Thu, 15 Jan 2015 17:44:49 +0100 Subject: [PATCH] Extend NoAnswer exception with optional question. The actual question will be printed as part of string representation of NoAnswer exception instead of terse "The response did not contain an answer to the question." --- dns/resolver.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/dns/resolver.py b/dns/resolver.py index d59f413a..93fb36d0 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -61,8 +61,19 @@ class YXDOMAIN(dns.exception.DNSException): Timeout = dns.exception.Timeout class NoAnswer(dns.exception.DNSException): - """The response did not contain an answer to the question.""" - pass + """The DNS response does not contain an answer to the question.""" + def __init__(self, question=None): + super(dns.exception.DNSException, self).__init__() + self.question = question + + def __str__(self): + message = self.__doc__ + if self.question: + message = message[0:-1] + for q in self.question: + message += ' %s' % q + return message + class NoNameservers(dns.exception.DNSException): """No non-broken nameservers are available to answer the query.""" @@ -139,11 +150,11 @@ class Answer(object): continue except KeyError: if raise_on_no_answer: - raise NoAnswer + raise NoAnswer(question=response.question) if raise_on_no_answer: - raise NoAnswer + raise NoAnswer(question=response.question) if rrset is None and raise_on_no_answer: - raise NoAnswer + raise NoAnswer(question=response.question) self.canonical_name = qname self.rrset = rrset if rrset is None: -- 2.47.3