Belle II Software  release-08-01-10
FrameworkExceptions.h
1 #pragma once
2 /**************************************************************************
3  * basf2 (Belle II Analysis Software Framework) *
4  * Author: The Belle II Collaboration *
5  * *
6  * See git log for contributors and copyright holders. *
7  * This file is licensed under LGPL-3.0, see LICENSE.md. *
8  **************************************************************************/
9 
10 #include <boost/format.hpp>
11 
12 namespace Belle2 {
36 #define BELLE2_DEFINE_EXCEPTION(ClassName, Message) \
37  class ClassName : public std::runtime_error { \
38  public: \
39  ClassName(): std::runtime_error(""), m_format(Message) { } \
40  ~ClassName() noexcept {} \
41  virtual const char * what() const noexcept override { \
42  m_finalStr = m_format.str();\
43  return m_finalStr.c_str();\
44  }\
45  template <class T> ClassName& operator<<(const T& param) {\
46  m_format % param;\
47  return *this;\
48  }\
49  private:\
50  boost::format m_format;\
51  mutable std::string m_finalStr;\
52  };
54 }
Abstract base class for different kinds of events.