diff --git a/src/GUI/DefaultAircraftLocator.cxx b/src/GUI/DefaultAircraftLocator.cxx
index 043a82d05..d0dfb6acb 100644
--- a/src/GUI/DefaultAircraftLocator.cxx
+++ b/src/GUI/DefaultAircraftLocator.cxx
@@ -2,6 +2,7 @@
 
 #include <simgear/props/props_io.hxx>
 #include <simgear/debug/logstream.hxx>
+#include <simgear/structure/exception.hxx>
 
 #include <Main/globals.hxx>
 #include <Main/locale.hxx>
@@ -10,11 +11,21 @@ static SGPropertyNode_ptr loadXMLDefaults()
 {
     SGPropertyNode_ptr root(new SGPropertyNode);
     const SGPath defaultsXML = globals->get_fg_root() / "defaults.xml";
-    readProperties(defaultsXML, root);
+    if (!defaultsXML.exists()) {
+        SG_LOG(SG_GUI, SG_POPUP, "Failed to find required data file (defaults.xml)");
+        return {};
+    }
+
+    try {
+       readProperties(defaultsXML, root);
+    } catch (sg_exception& e) {
+        SG_LOG(SG_GUI, SG_POPUP, "Failed to read required data file (defaults.xml)");
+        return {};
+    }
 
     if (!root->hasChild("sim")) {
         SG_LOG(SG_GUI, SG_POPUP, "Failed to find /sim node in defaults.xml, broken");
-        return SGPropertyNode_ptr();
+        return {};
     }
 
     return root;
@@ -28,7 +39,7 @@ std::string defaultAirportICAO()
 {
     SGPropertyNode_ptr root = loadXMLDefaults();
     if (!root) {
-        return std::string();
+        return {};
     }
 
     std::string airportCode = root->getStringValue("/sim/presets/airport-id");