diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py
index 98ac0684fc87d7c25e0a8d37fb71238b3dec3e9c..ed9b0f85510b63f2ff0151ff2bc675cb70c77abd 100644
--- a/synapse/handlers/directory.py
+++ b/synapse/handlers/directory.py
@@ -122,10 +122,14 @@ class DirectoryHandler(BaseHandler):
             room_alias
         )
 
-        defer.returnValue({
-            "room_id": result.room_id,
-            "servers": result.servers,
-        })
+        if result is not None:
+            defer.returnValue({
+                "room_id": result.room_id,
+                "servers": result.servers,
+            })
+        else:
+            raise SynapseError(404, "Room alias \"%s\" not found", room_alias)
+
 
     @defer.inlineCallbacks
     def send_room_alias_update_event(self, user_id, room_id):