diff --git a/Framework/API/src/FileLoaderRegistry.cpp b/Framework/API/src/FileLoaderRegistry.cpp
index e667c6b5a69f650d3b9b238cd80a5a6131845841..f97452a75e6f20d00617e0221f6579dae3e2a862 100644
--- a/Framework/API/src/FileLoaderRegistry.cpp
+++ b/Framework/API/src/FileLoaderRegistry.cpp
@@ -113,10 +113,11 @@ FileLoaderRegistryImpl::chooseLoader(const std::string &filename) const {
     m_log.debug()
         << filename
         << " looks like a Nexus file. Checking registered Nexus loaders\n";
-    bestLoader =
-        searchForLoader<NexusHDF5Descriptor, IFileLoader<NexusHDF5Descriptor>>(
-            filename, m_names[Nexus], m_log);
-    if (!bestLoader) {
+    try {
+      bestLoader = searchForLoader<NexusHDF5Descriptor,
+                                   IFileLoader<NexusHDF5Descriptor>>(
+          filename, m_names[Nexus], m_log);
+    } catch (const std::invalid_argument &) {
       bestLoader =
           searchForLoader<NexusDescriptor, IFileLoader<NexusDescriptor>>(
               filename, m_names[Nexus], m_log);