1
0
Fork 0

FlightPlan: don’t use exceptions for load errors

Avoid spamming Sentry when loading problem flight-plans.
This commit is contained in:
Automatic Release Builder 2020-11-10 11:11:27 +00:00 committed by James Turner
parent 6f8c786e1a
commit be50f64821
2 changed files with 18 additions and 8 deletions

View file

@ -1081,14 +1081,16 @@ bool FlightPlan::loadXmlFormat(const SGPath& path)
{ {
try { try {
int version = routeData->getIntValue("version", 1); int version = routeData->getIntValue("version", 1);
bool ok = false;
if (version == 1) { if (version == 1) {
loadVersion1XMLRoute(routeData); ok = loadVersion1XMLRoute(routeData);
} else if (version == 2) { } else if (version == 2) {
loadVersion2XMLRoute(routeData); ok = loadVersion2XMLRoute(routeData);
} else { } else {
throw sg_io_exception("unsupported XML route version"); SG_LOG(SG_NAVAID, SG_POPUP, "Unsupported flight plan version " << version << " loading " << path);
} }
return true;
return ok;
} catch (sg_exception& e) { } catch (sg_exception& e) {
SG_LOG(SG_NAVAID, SG_ALERT, "Failed to load flight-plan '" << e.getOrigin() SG_LOG(SG_NAVAID, SG_ALERT, "Failed to load flight-plan '" << e.getOrigin()
<< "'. " << e.getMessage()); << "'. " << e.getMessage());
@ -1188,8 +1190,11 @@ void FlightPlan::loadXMLRouteHeader(SGPropertyNode_ptr routeData)
} // of cruise data loading } // of cruise data loading
} }
void FlightPlan::loadVersion2XMLRoute(SGPropertyNode_ptr routeData) bool FlightPlan::loadVersion2XMLRoute(SGPropertyNode_ptr routeData)
{ {
if (!routeData->hasChild("route"))
return false;
loadXMLRouteHeader(routeData); loadXMLRouteHeader(routeData);
// route nodes // route nodes
@ -1219,10 +1224,14 @@ void FlightPlan::loadVersion2XMLRoute(SGPropertyNode_ptr routeData)
} // of route iteration } // of route iteration
} }
_waypointsChanged = true; _waypointsChanged = true;
return true;
} }
void FlightPlan::loadVersion1XMLRoute(SGPropertyNode_ptr routeData) bool FlightPlan::loadVersion1XMLRoute(SGPropertyNode_ptr routeData)
{ {
if (!routeData->hasChild("route"))
return false;
loadXMLRouteHeader(routeData); loadXMLRouteHeader(routeData);
// _legs nodes // _legs nodes
@ -1234,6 +1243,7 @@ void FlightPlan::loadVersion1XMLRoute(SGPropertyNode_ptr routeData)
_legs.push_back(l); _legs.push_back(l);
} // of route iteration } // of route iteration
_waypointsChanged = true; _waypointsChanged = true;
return true;
} }
WayptRef FlightPlan::parseVersion1XMLWaypt(SGPropertyNode* aWP) WayptRef FlightPlan::parseVersion1XMLWaypt(SGPropertyNode* aWP)

View file

@ -420,8 +420,8 @@ private:
bool loadGpxFormat(const SGPath& path); bool loadGpxFormat(const SGPath& path);
bool loadPlainTextFormat(const SGPath& path); bool loadPlainTextFormat(const SGPath& path);
void loadVersion1XMLRoute(SGPropertyNode_ptr routeData); bool loadVersion1XMLRoute(SGPropertyNode_ptr routeData);
void loadVersion2XMLRoute(SGPropertyNode_ptr routeData); bool loadVersion2XMLRoute(SGPropertyNode_ptr routeData);
void loadXMLRouteHeader(SGPropertyNode_ptr routeData); void loadXMLRouteHeader(SGPropertyNode_ptr routeData);
WayptRef parseVersion1XMLWaypt(SGPropertyNode* aWP); WayptRef parseVersion1XMLWaypt(SGPropertyNode* aWP);