Error handling

As you saw in previous sections the DnsClient allows you to pass in a Handler which will be notified with an AsyncResult once the query was complete. In case of an error it will be notified with a DnsException which will hole a DnsResponseCode that indicate why the resolution failed. This DnsResponseCode can be used to inspect the cause in more detail.

Possible DnsResponseCodes are:

All of those errors are "generated" by the DNS Server itself.

You can obtain the DnsResponseCode from the DnsException like:

def client = vertx.createDnsClient(53, "8.8.8.8");
client.lookup("missing.vertx.io", { ar ->
if (ar.succeeded()) {
  def record = ar.result();
  println "record: " + record;
} else {
  def cause = ar.cause();
  if (cause instanceof DnsException) {
  def code = cause.code();
  println "Code : " + code
  // ...
  } else {
    println("Failed to resolve entry" + ar.cause());
  }
}
})