summaryrefslogtreecommitdiff
path: root/platform/qt
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira <ander.deoliveira@mapbox.com>2019-02-22 09:31:21 +0200
committerAnder Conselvan de Oliveira <ander.deoliveira@mapbox.com>2019-03-13 11:58:27 +0200
commit7d1911572000d1353c1c0109402431323fcd8639 (patch)
tree4881a1e159415cd796e255bec951a7bb32b23ee8 /platform/qt
parent565792606d5d03d0cc9889f112bb50345c899005 (diff)
downloadqtlocation-mapboxgl-7d1911572000d1353c1c0109402431323fcd8639.tar.gz
[core] Don't use exceptions in MapObserver::onDidFailLoadingMap
Using different exception pointers to specify the loading failure makes an awkward API. Most users rethrow the exception only to figure out what type of error happened so it can be reported properly. So replace the exception pointer with a enum an string description of the failure.
Diffstat (limited to 'platform/qt')
-rw-r--r--platform/qt/src/qmapboxgl_map_observer.cpp32
-rw-r--r--platform/qt/src/qmapboxgl_map_observer.hpp2
2 files changed, 16 insertions, 18 deletions
diff --git a/platform/qt/src/qmapboxgl_map_observer.cpp b/platform/qt/src/qmapboxgl_map_observer.cpp
index 44cb8c41d5..4a842026cd 100644
--- a/platform/qt/src/qmapboxgl_map_observer.cpp
+++ b/platform/qt/src/qmapboxgl_map_observer.cpp
@@ -48,27 +48,25 @@ void QMapboxGLMapObserver::onDidFinishLoadingMap()
emit mapChanged(QMapboxGL::MapChangeDidFinishLoadingMap);
}
-void QMapboxGLMapObserver::onDidFailLoadingMap(std::exception_ptr exception)
+void QMapboxGLMapObserver::onDidFailLoadingMap(mbgl::MapLoadError error, const std::string& what)
{
emit mapChanged(QMapboxGL::MapChangeDidFailLoadingMap);
QMapboxGL::MapLoadingFailure type;
- QString description;
-
- try {
- std::rethrow_exception(exception);
- } catch (const mbgl::util::StyleParseException& e) {
- type = QMapboxGL::MapLoadingFailure::StyleParseFailure;
- description = e.what();
- } catch (const mbgl::util::StyleLoadException& e) {
- type = QMapboxGL::MapLoadingFailure::StyleLoadFailure;
- description = e.what();
- } catch (const mbgl::util::NotFoundException& e) {
- type = QMapboxGL::MapLoadingFailure::NotFoundFailure;
- description = e.what();
- } catch (const std::exception& e) {
- type = QMapboxGL::MapLoadingFailure::UnknownFailure;
- description = e.what();
+ QString description(what.c_str());
+
+ switch (error) {
+ case mbgl::MapLoadError::StyleParseError:
+ type = QMapboxGL::MapLoadingFailure::StyleParseFailure;
+ break;
+ case mbgl::MapLoadError::StyleLoadError:
+ type = QMapboxGL::MapLoadingFailure::StyleLoadFailure;
+ break;
+ case mbgl::MapLoadError::NotFoundError:
+ type = QMapboxGL::MapLoadingFailure::NotFoundFailure;
+ break;
+ default:
+ type = QMapboxGL::MapLoadingFailure::UnknownFailure;
}
emit mapLoadingFailed(type, description);
diff --git a/platform/qt/src/qmapboxgl_map_observer.hpp b/platform/qt/src/qmapboxgl_map_observer.hpp
index 98da5b6add..a12e5e9c70 100644
--- a/platform/qt/src/qmapboxgl_map_observer.hpp
+++ b/platform/qt/src/qmapboxgl_map_observer.hpp
@@ -26,7 +26,7 @@ public:
void onCameraDidChange(mbgl::MapObserver::CameraChangeMode) final;
void onWillStartLoadingMap() final;
void onDidFinishLoadingMap() final;
- void onDidFailLoadingMap(std::exception_ptr) final;
+ void onDidFailLoadingMap(mbgl::MapLoadError, const std::string&) final;
void onWillStartRenderingFrame() final;
void onDidFinishRenderingFrame(mbgl::MapObserver::RenderMode) final;
void onWillStartRenderingMap() final;