37#ifndef Alembic_Abc_ErrorHandler_h
38#define Alembic_Abc_ErrorHandler_h
40#include <Alembic/Util/Export.h>
41#include <Alembic/Abc/Foundation.h>
45namespace ALEMBIC_VERSION_NS {
48class ALEMBIC_EXPORT ErrorHandler
58 enum UnknownExceptionFlag
64 : m_policy( kThrowPolicy )
67 ErrorHandler( Policy iPolicy )
75 const std::string &iCtx =
"" );
78 const std::string &iCtx =
"" );
81 const std::string &iCtx =
"" );
83 Policy getPolicy()
const {
return m_policy; }
84 void setPolicy( Policy iPolicy ) { m_policy = iPolicy; }
86 const std::string getErrorLog()
const {
return m_errorLog; }
88 bool valid()
const {
return ( m_errorLog ==
"" ); }
90 void clear() { m_errorLog =
""; }
95 Context( ErrorHandler &iEhnd,
const char *iCtxMsg )
97 m_message( iCtxMsg ) {}
99 void operator()( std::exception &iExc )
101 m_handler( iExc, m_message );
104 void operator()(
const std::string &iMsg )
106 m_handler( iMsg, m_message );
109 void operator()( UnknownExceptionFlag iUef )
111 m_handler( iUef, m_message );
115 const Context& operator= (
const Context&);
116 ErrorHandler &m_handler;
117 const char *m_message;
121 void handleIt(
const std::string &iErr );
124 std::string m_errorLog;
130inline ErrorHandler::Policy
131GetErrorHandlerPolicy( AbcA::ArchiveWriterPtr )
132{
return ErrorHandler::kThrowPolicy; }
134inline ErrorHandler::Policy
135GetErrorHandlerPolicy( AbcA::ObjectWriterPtr )
136{
return ErrorHandler::kThrowPolicy; }
138inline ErrorHandler::Policy
139GetErrorHandlerPolicy( AbcA::CompoundPropertyWriterPtr )
140{
return ErrorHandler::kThrowPolicy; }
142inline ErrorHandler::Policy
143GetErrorHandlerPolicy( AbcA::ScalarPropertyWriterPtr )
144{
return ErrorHandler::kThrowPolicy; }
146inline ErrorHandler::Policy
147GetErrorHandlerPolicy( AbcA::ArrayPropertyWriterPtr )
148{
return ErrorHandler::kThrowPolicy; }
151inline ErrorHandler::Policy
152GetErrorHandlerPolicy( AbcA::ArchiveReaderPtr )
153{
return ErrorHandler::kThrowPolicy; }
155inline ErrorHandler::Policy
156GetErrorHandlerPolicy( AbcA::ObjectReaderPtr )
157{
return ErrorHandler::kThrowPolicy; }
159inline ErrorHandler::Policy
160GetErrorHandlerPolicy( AbcA::CompoundPropertyReaderPtr )
161{
return ErrorHandler::kThrowPolicy; }
163inline ErrorHandler::Policy
164GetErrorHandlerPolicy( AbcA::ScalarPropertyReaderPtr )
165{
return ErrorHandler::kThrowPolicy; }
167inline ErrorHandler::Policy
168GetErrorHandlerPolicy( AbcA::ArrayPropertyReaderPtr )
169{
return ErrorHandler::kThrowPolicy; }
172#define ALEMBIC_ABC_SAFE_CALL_BEGIN( CONTEXT ) \
175 ::Alembic::Abc::ErrorHandler::Context \
176 __err( this->getErrorHandler(), ( CONTEXT ) ); \
181#define ALEMBIC_ABC_SAFE_CALL_END_RESET() \
183 catch ( std::exception &exc ) \
191 __err( ::Alembic::Abc:: \
192 ErrorHandler::kUnknownException ); \
198#define ALEMBIC_ABC_SAFE_CALL_END() \
200 catch ( std::exception &exc ) \
206 __err( ::Alembic::Abc:: \
207 ErrorHandler::kUnknownException ); \
214using namespace ALEMBIC_VERSION_NS;
void operator()(std::exception &iExc, const std::string &iCtx="")
Definition ErrorHandler.cpp:44
Alembic namespace ...
Definition ArchiveInfo.cpp:39