13 #ifndef VMCMC_EXCEPTION_H_ 14 #define VMCMC_EXCEPTION_H_ 37 const char* what()
const throw()
override;
39 template <
typename XValue>
40 Exception& operator<<(
const XValue& toAppend);
42 Exception& Nest(
const std::exception& toNest);
45 std::ostringstream fMessage;
46 std::string fNestedMessage;
48 mutable std::string fWhat;
51 inline Exception::Exception(
const Exception& toCopy ) :
52 std::exception( toCopy ),
53 fMessage( toCopy.fMessage.str() ),
54 fNestedMessage( toCopy.fNestedMessage )
57 inline void Exception::operator=(
const Exception& toCopy )
59 std::exception::operator=( toCopy );
60 fMessage.str( toCopy.fMessage.str() );
61 fNestedMessage = toCopy.fNestedMessage;
64 inline const char* Exception::what()
const throw()
66 fWhat = fMessage.str();
67 if( !fNestedMessage.empty() ) {
68 fWhat.append(
" [" + fNestedMessage +
"]" );
73 template<
typename XValue>
74 inline Exception& Exception::operator<<(
const XValue& toAppend)
80 inline Exception& Exception::Nest(
const std::exception& toNest)
82 fNestedMessage = toNest.what();
86 inline std::ostream& operator<<(std::ostream& os,
const Exception& e)
88 return os << e.what();
Definition: algorithm.cpp:28
Base class for exceptions thrown by FastMCMC.
Definition: exception.hpp:28