From e5dc9d066777c49b130e630d71e9e9d6367e8f6b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 18 Jan 2019 17:01:38 +0200 Subject: [PATCH] Each exception class must implement two helper functions to support throwing and catching exceptions across thread boundaries. --HG-- branch : develop --- src/libs/ifc/exception/vexceptionbadid.h | 5 +++++ src/libs/ifc/exception/vexceptionconversionerror.h | 6 ++++++ src/libs/ifc/exception/vexceptionemptyparameter.h | 6 ++++++ src/libs/ifc/exception/vexceptioninvalidnotch.h | 5 +++++ src/libs/ifc/exception/vexceptionobjecterror.h | 5 +++++ src/libs/ifc/exception/vexceptionundo.h | 4 ++++ src/libs/ifc/exception/vexceptionwrongid.h | 5 +++++ 7 files changed, 36 insertions(+) diff --git a/src/libs/ifc/exception/vexceptionbadid.h b/src/libs/ifc/exception/vexceptionbadid.h index 712feb572..a6cabb97b 100644 --- a/src/libs/ifc/exception/vexceptionbadid.h +++ b/src/libs/ifc/exception/vexceptionbadid.h @@ -47,6 +47,11 @@ public: VExceptionBadId(const VExceptionBadId &e); VExceptionBadId &operator=(const VExceptionBadId &e); virtual ~VExceptionBadId() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionBadId *clone() const override { return new VExceptionBadId(*this); } + virtual QString ErrorMessage() const override; quint32 BadId() const; QString BadKey() const; diff --git a/src/libs/ifc/exception/vexceptionconversionerror.h b/src/libs/ifc/exception/vexceptionconversionerror.h index 44eb367ac..5e29daaf0 100644 --- a/src/libs/ifc/exception/vexceptionconversionerror.h +++ b/src/libs/ifc/exception/vexceptionconversionerror.h @@ -45,6 +45,12 @@ public: VExceptionConversionError(const VExceptionConversionError &e); VExceptionConversionError &operator=(const VExceptionConversionError &e); virtual ~VExceptionConversionError() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionConversionError *clone() const override + { return new VExceptionConversionError(*this); } + virtual QString ErrorMessage() const override; QString String() const; protected: diff --git a/src/libs/ifc/exception/vexceptionemptyparameter.h b/src/libs/ifc/exception/vexceptionemptyparameter.h index b81cc4613..d496fcd54 100644 --- a/src/libs/ifc/exception/vexceptionemptyparameter.h +++ b/src/libs/ifc/exception/vexceptionemptyparameter.h @@ -48,6 +48,12 @@ public: VExceptionEmptyParameter(const VExceptionEmptyParameter &e); VExceptionEmptyParameter &operator=(const VExceptionEmptyParameter &e); virtual ~VExceptionEmptyParameter() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionEmptyParameter *clone() const override + { return new VExceptionEmptyParameter(*this); } + virtual QString ErrorMessage() const override; virtual QString DetailedInformation() const override; QString Name() const; diff --git a/src/libs/ifc/exception/vexceptioninvalidnotch.h b/src/libs/ifc/exception/vexceptioninvalidnotch.h index 3b0c9fcd9..bab01fbd6 100644 --- a/src/libs/ifc/exception/vexceptioninvalidnotch.h +++ b/src/libs/ifc/exception/vexceptioninvalidnotch.h @@ -37,6 +37,11 @@ public: VExceptionInvalidNotch(const VExceptionInvalidNotch &e); VExceptionInvalidNotch &operator=(const VExceptionInvalidNotch &e); virtual ~VExceptionInvalidNotch() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionInvalidNotch *clone() const override + { return new VExceptionInvalidNotch(*this); } }; #endif // VEXCEPTIONINVALIDNOTCH_H diff --git a/src/libs/ifc/exception/vexceptionobjecterror.h b/src/libs/ifc/exception/vexceptionobjecterror.h index ccc8011ed..26d7e699b 100644 --- a/src/libs/ifc/exception/vexceptionobjecterror.h +++ b/src/libs/ifc/exception/vexceptionobjecterror.h @@ -49,6 +49,11 @@ public: VExceptionObjectError(const VExceptionObjectError &e); VExceptionObjectError &operator=(const VExceptionObjectError &e); virtual ~VExceptionObjectError() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionObjectError *clone() const override { return new VExceptionObjectError(*this); } + virtual QString ErrorMessage() const override; virtual QString DetailedInformation() const override; QString TagText() const; diff --git a/src/libs/ifc/exception/vexceptionundo.h b/src/libs/ifc/exception/vexceptionundo.h index a070a70f9..f78385523 100644 --- a/src/libs/ifc/exception/vexceptionundo.h +++ b/src/libs/ifc/exception/vexceptionundo.h @@ -41,6 +41,10 @@ public: explicit VExceptionUndo(const QString &what); VExceptionUndo(const VExceptionUndo &e); virtual ~VExceptionUndo() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionUndo *clone() const override { return new VExceptionUndo(*this); } }; #endif // VEXCEPTIONUNDO_H diff --git a/src/libs/ifc/exception/vexceptionwrongid.h b/src/libs/ifc/exception/vexceptionwrongid.h index 7e53b97f2..24dfc7288 100644 --- a/src/libs/ifc/exception/vexceptionwrongid.h +++ b/src/libs/ifc/exception/vexceptionwrongid.h @@ -48,6 +48,11 @@ public: VExceptionWrongId(const VExceptionWrongId &e); VExceptionWrongId &operator=(const VExceptionWrongId &e); virtual ~VExceptionWrongId() V_NOEXCEPT_EXPR (true) Q_DECL_EQ_DEFAULT; + + Q_NORETURN virtual void raise() const override { throw *this; } + + Q_REQUIRED_RESULT virtual VExceptionWrongId *clone() const override { return new VExceptionWrongId(*this); } + virtual QString ErrorMessage() const override; virtual QString DetailedInformation() const override; QString TagText() const;