diff --git a/ns-tree.py b/ns-tree.py
index 59f80f5615019593cc6ad5fbf5f0f05f482a1f9e..fbf0a7c4b34fe7e1d4a09dc4b784258e9fde3373 100755
--- a/ns-tree.py
+++ b/ns-tree.py
@@ -97,6 +97,9 @@ class Node:
         data = dict()
         for ns in self.ns_set:
             ns_zone = get_zone_name( ns )
+            if not ns_zone:
+                print(f"Warning: could not resolve {ns} for zone {self.zone}")
+                continue
             if ns_zone not in data:
                 data[ns_zone] = set()
             data[ns_zone].add(ns)
@@ -126,7 +129,10 @@ class Edge:
         return s
 
 def get_zone_name( qname ):
-    ans = dns.resolver.resolve( qname, dns.rdatatype.SOA, raise_on_no_answer=False )
+    try:
+        ans = dns.resolver.resolve( qname, dns.rdatatype.SOA, raise_on_no_answer=False )
+    except Exception as e:
+        return None
     res = ans.response
     rrset = []
     try: