diff --git a/Applications/DataExplorer/mainwindow.cpp b/Applications/DataExplorer/mainwindow.cpp index 62c78169fe10b6b66b0530fc9430590fcb4842b3..b0a850888ba5002266faf9b1de6102d88dc3699a 100644 --- a/Applications/DataExplorer/mainwindow.cpp +++ b/Applications/DataExplorer/mainwindow.cpp @@ -497,8 +497,18 @@ void MainWindow::loadFile(ImportFileType::type t, const QString &fileName) else if (fi.suffix().toLower() == "gml") { GeoLib::IO::XmlGmlInterface xml(_project.getGEOObjects()); - if (!xml.readFile(fileName)) - OGSError::box("Failed to load geometry.\n Please see console for details."); + try + { + if (!xml.readFile(fileName)) + OGSError::box( + "Failed to load geometry.\n Please see console for " + "details."); + } + catch (std::runtime_error const& err) + { + OGSError::box(err.what(), + "Failed to read file `" + fileName + "'"); + } } // OpenGeoSys observation station files (incl. boreholes) else if (fi.suffix().toLower() == "stn") diff --git a/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp b/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp index f37e62bd8c3bfb24128e528d29ea9a773b1c7e6e..9a2b1a7118a3cf27b99676597256912ef162d07f 100644 --- a/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp +++ b/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp @@ -18,13 +18,14 @@ #include <QtXml/QDomDocument> #include <logog/include/logog.hpp> +#include "Applications/DataExplorer/Base/OGSError.h" +#include "Applications/DataHolderLib/FemCondition.h" + #include "BaseLib/BuildInfo.h" #include "BaseLib/FileFinder.h" #include "BaseLib/FileTools.h" #include "BaseLib/IO/Writer.h" -#include "Applications/DataHolderLib/FemCondition.h" - #include "GeoLib/GEOObjects.h" #include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h" @@ -75,7 +76,15 @@ int XmlPrjInterface::readFile(const QString& fileName) if (node_name == "geometry") { GeoLib::IO::XmlGmlInterface gml(_project.getGEOObjects()); - gml.readFile(QString(path + file_name)); + try + { + gml.readFile(QString(path + file_name)); + } + catch (std::runtime_error const& err) + { + OGSError::box(err.what(), + "Failed to read file `" + fileName + "'"); + } } else if (node_name == "stations") { diff --git a/Applications/Utils/GeoTools/MoveGeometry.cpp b/Applications/Utils/GeoTools/MoveGeometry.cpp index ee5f58e3a68600faa97211f86e74bbcaffdb8798..573ee81377489850f22a017e5ef2aa110d3e8c80 100644 --- a/Applications/Utils/GeoTools/MoveGeometry.cpp +++ b/Applications/Utils/GeoTools/MoveGeometry.cpp @@ -50,8 +50,17 @@ int main(int argc, char *argv[]) GeoLib::GEOObjects geo_objects; GeoLib::IO::XmlGmlInterface xml(geo_objects); - if (!xml.readFile(geo_input_arg.getValue())) + try { + if (!xml.readFile(geo_input_arg.getValue())) + { + return EXIT_FAILURE; + } + } + catch (std::runtime_error const& err) + { + ERR("Failed to read file `%s'.", geo_input_arg.getValue().c_str()); + ERR("%s", err.what()); return EXIT_FAILURE; } diff --git a/Applications/Utils/GeoTools/TriangulatePolyline.cpp b/Applications/Utils/GeoTools/TriangulatePolyline.cpp index f643e4fe01e9ccaf864618c845993872c8029a03..46484850ee6c79a7707968cc3adff5ce4d507dc2 100644 --- a/Applications/Utils/GeoTools/TriangulatePolyline.cpp +++ b/Applications/Utils/GeoTools/TriangulatePolyline.cpp @@ -56,9 +56,18 @@ int main(int argc, char *argv[]) GeoLib::GEOObjects geo_objects; GeoLib::IO::XmlGmlInterface xml(geo_objects); - if (!xml.readFile(file_name)) + try { - ERR ("Failed to load geometry file."); + if (!xml.readFile(file_name)) + { + ERR("Failed to load geometry file."); + return EXIT_FAILURE; + } + } + catch (std::runtime_error const& err) + { + ERR("Failed to read file `%s'.", file_name.c_str()); + ERR("%s", err.what()); return EXIT_FAILURE; } diff --git a/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp b/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp index 9088768c7a4ce3dcb540055b87b5851b16c31e5c..dbcda6beab56113efb4dbe5353d8392f89973b97 100644 --- a/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp +++ b/Applications/Utils/OGSFileConverter/OGSFileConverter.cpp @@ -53,11 +53,21 @@ void OGSFileConverter::convertGML2GLI(const QStringList &input, const QString &o if (fileExists(output_str)) continue; - if (!xml.readFile(input_string)) + try { - OGSError::box("Error reading geometry " + fi.fileName()); + if (!xml.readFile(input_string)) + { + OGSError::box("Error reading geometry " + fi.fileName()); + continue; + } + } + catch (std::runtime_error const& err) + { + OGSError::box(err.what(), + "Failed to read file `" + input_string + "'"); continue; } + std::vector<std::string> geo_names; geo_objects.getGeometryNames(geo_names); FileIO::Legacy::writeGLIFileV4(output_str, geo_names[0], geo_objects);