diff options
author | Ander Conselvan de Oliveira <ander.deoliveira@mapbox.com> | 2019-02-22 09:31:21 +0200 |
---|---|---|
committer | Ander Conselvan de Oliveira <ander.deoliveira@mapbox.com> | 2019-03-13 11:58:27 +0200 |
commit | 7d1911572000d1353c1c0109402431323fcd8639 (patch) | |
tree | 4881a1e159415cd796e255bec951a7bb32b23ee8 /platform/qt | |
parent | 565792606d5d03d0cc9889f112bb50345c899005 (diff) | |
download | qtlocation-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.cpp | 32 | ||||
-rw-r--r-- | platform/qt/src/qmapboxgl_map_observer.hpp | 2 |
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; |