port)`` pair for IPv4; additional fields may be present for
IPv6). If a ``callback`` is passed, it will be run with the
result as an argument when it is complete.
+
+ :raises IOError: if the address cannot be resolved.
+
+ .. versionchanged:: 4.4
+ Standardized all implementations to raise `IOError`.
"""
raise NotImplementedError()
assert not callback_args.kwargs
result, error = callback_args.args
if error:
- raise Exception('C-Ares returned error %s: %s while resolving %s' %
- (error, pycares.errno.strerror(error), host))
+ raise IOError('C-Ares returned error %s: %s while resolving %s' %
+ (error, pycares.errno.strerror(error), host))
addresses = result.addresses
addrinfo = []
for address in addresses:
else:
address_family = socket.AF_UNSPEC
if family != socket.AF_UNSPEC and family != address_family:
- raise Exception('Requested socket family %d but got %d' %
- (family, address_family))
+ raise IOError('Requested socket family %d but got %d' %
+ (family, address_family))
addrinfo.append((address_family, (address, port)))
raise gen.Return(addrinfo)
deferred = self.resolver.getHostByName(utf8(host))
resolved = yield gen.Task(deferred.addBoth)
if isinstance(resolved, failure.Failure):
- resolved.raiseException()
+ try:
+ resolved.raiseException()
+ except twisted.names.error.DomainError as e:
+ raise IOError(e)
elif twisted.internet.abstract.isIPAddress(resolved):
resolved_family = socket.AF_INET
elif twisted.internet.abstract.isIPv6Address(resolved):
@gen_test
def test_future_interface_bad_host(self):
- with self.assertRaises(Exception):
+ with self.assertRaises(IOError):
yield self.resolver.resolve('an invalid domain', 80,
socket.AF_UNSPEC)