Browse Source

chore(format): format megbrain/exception.h

GitOrigin-RevId: 744ed23b2d
tags/v0.6.0
Megvii Engine Team 5 years ago
parent
commit
49f02e71fc
1 changed files with 74 additions and 80 deletions
  1. +74
    -80
      src/core/include/megbrain/exception.h

+ 74
- 80
src/core/include/megbrain/exception.h View File

@@ -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 <typename T>
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<typename T>
MegBrainError& extra_info(T &&ptr) {
m_extra_info = ptr;
return *this;
}

~MegBrainError() noexcept = default;

private:
std::shared_ptr<ExtraInfo> m_extra_info;
void init();
~MegBrainError() noexcept = default;

private:
std::shared_ptr<ExtraInfo> 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;
};




Loading…
Cancel
Save