diff --git a/src/core/include/megbrain/exception.h b/src/core/include/megbrain/exception.h index 7c16e316e683454538b6db9c09e9cf5c753a3f31..9f5eb604c4ec8a93a02ff100ff15290a844156d7 100644 --- a/src/core/include/megbrain/exception.h +++ b/src/core/include/megbrain/exception.h @@ -6,7 +6,8 @@ * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. */ #pragma once @@ -75,118 +76,111 @@ namespace mgb { //! the most general MegBrain exception type; also base class for all megbrain //! exceptions -class MegBrainError: public std::exception { - protected: - std::string m_msg; - +class MegBrainError : public std::exception { +protected: + std::string m_msg; + +public: + /*! + * \brief base class for extra information to be associated with an + * exception + */ + class ExtraInfo { public: + virtual ~ExtraInfo() = default; + }; + + MegBrainError(const std::string& msg) : m_msg(msg) { init(); } + + const char* what() const noexcept override { return m_msg.c_str(); } + + /*! + * \brief get associated extra info, or nullptr + */ + const ExtraInfo* extra_info() const { return m_extra_info.get(); } + + /*! + * \brief set extra info + */ + template + MegBrainError& extra_info(T&& ptr) { + m_extra_info = ptr; + return *this; + } - /*! - * \brief base class for extra information to be associated with an - * exception - */ - class ExtraInfo { - public: - virtual ~ExtraInfo() = default; - }; - - MegBrainError(const std::string& msg) : m_msg(msg) { init(); } - - const char *what() const noexcept override { - return m_msg.c_str(); - } - - /*! - * \brief get associated extra info, or nullptr - */ - const ExtraInfo* extra_info() const { - return m_extra_info.get(); - } - - /*! - * \brief set extra info - */ - template - MegBrainError& extra_info(T &&ptr) { - m_extra_info = ptr; - return *this; - } - - ~MegBrainError() noexcept = default; - - private: - std::shared_ptr m_extra_info; - void init(); + ~MegBrainError() noexcept = default; + +private: + std::shared_ptr m_extra_info; + void init(); }; //! base class for system error: error caused by uncontrollable environment class SystemError : public MegBrainError { - public: - using MegBrainError::MegBrainError; +public: + using MegBrainError::MegBrainError; }; /*! * \brief exception to be thrown if failing to allocate memory */ -class MemAllocError: public SystemError { - public: - using SystemError::SystemError; +class MemAllocError : public SystemError { +public: + using SystemError::SystemError; }; +class CudaError final : public SystemError { +public: + /*! + * \brief get extra info for current cuda status, to be appended in + * error message + */ + static std::string get_cuda_extra_info(); -class CudaError final: public SystemError { - public: - /*! - * \brief get extra info for current cuda status, to be appended in - * error message - */ - static std::string get_cuda_extra_info(); - - CudaError(const std::string &msg); + CudaError(const std::string& msg); }; - -class AssertionError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class AssertionError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; //! datatype conversion error -class ConversionError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class ConversionError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; -class TensorCopyOverlapError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class TensorCopyOverlapError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; -class TensorReshapeError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class TensorReshapeError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; -class SerializationError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class SerializationError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; -class MegDNNError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class MegDNNError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; //! megbrain internal error; should be treated as a bug -class InternalError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class InternalError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; }; -class TimeoutError final: public MegBrainError { - public: - using MegBrainError::MegBrainError; +class TimeoutError final : public MegBrainError { +public: + using MegBrainError::MegBrainError; };