42 #ifndef TEUCHOS_TEST_FOR_EXCEPTION_H 43 #define TEUCHOS_TEST_FOR_EXCEPTION_H 82 #ifdef HAVE_TEUCHOS_STACKTRACE 83 # define TEUCHOS_STORE_STACKTRACE() \ 84 if (Teuchos::TestForException_getEnableStacktrace()) { \ 85 Teuchos::store_stacktrace(); \ 88 # define TEUCHOS_STORE_STACKTRACE() 167 #define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg) \ 169 const bool throw_exception = (throw_exception_test); \ 170 if(throw_exception) { \ 171 Teuchos::TestForException_incrThrowNumber(); \ 172 std::ostringstream omsg; \ 174 << __FILE__ << ":" << __LINE__ << ":\n\n" \ 175 << "Throw number = " << Teuchos::TestForException_getThrowNumber() \ 177 << "Throw test that evaluated to true: "#throw_exception_test \ 180 const std::string &omsgstr = omsg.str(); \ 181 TEUCHOS_STORE_STACKTRACE(); \ 182 Teuchos::TestForException_break(omsgstr); \ 183 throw Exception(omsgstr); \ 229 #define TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(throw_exception_test, Exception, msg) \ 231 TEUCHOS_TEST_FOR_EXCEPTION( (throw_exception_test), Exception, \ 232 Teuchos::typeName(*this) << "::" << tfecfFuncName << msg ) \ 243 #define TEUCHOS_TEST_FOR_EXCEPTION_PURE_MSG(throw_exception_test, Exception, msg) \ 245 const bool throw_exception = (throw_exception_test); \ 246 if(throw_exception) { \ 247 Teuchos::TestForException_incrThrowNumber(); \ 248 std::ostringstream omsg; \ 250 omsg << "\n\nThrow number = " << Teuchos::TestForException_getThrowNumber() << "\n\n"; \ 251 const std::string &omsgstr = omsg.str(); \ 252 Teuchos::TestForException_break(omsgstr); \ 253 TEUCHOS_STORE_STACKTRACE(); \ 254 throw Exception(omsgstr); \ 276 #define TEUCHOS_TEST_FOR_EXCEPTION_PRINT(throw_exception_test, Exception, msg, out_ptr) \ 278 TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg); \ 280 catch(const std::exception &except) { \ 281 std::ostream *l_out_ptr = (out_ptr); \ 284 << "\nThrowing an std::exception of type \'"<<Teuchos::typeName(except) \ 285 <<"\' with the error message: " \ 304 #define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test) \ 305 TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, std::logic_error, "Error!") 324 #define TEUCHOS_TEST_FOR_EXCEPT_MSG(throw_exception_test, msg) \ 325 TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, std::logic_error, msg) 341 #define TEUCHOS_TEST_FOR_EXCEPT_PRINT(throw_exception_test, out_ptr) \ 342 TEUCHOS_TEST_FOR_EXCEPTION_PRINT(throw_exception_test, std::logic_error, "Error!", out_ptr) 353 #define TEUCHOS_TRACE(exc)\ 355 std::ostringstream omsg; \ 356 omsg << exc.what() << std::endl \ 357 << "caught in " << __FILE__ << ":" << __LINE__ << std::endl ; \ 358 throw std::runtime_error(omsg.str()); \ 364 #endif // TEUCHOS_TEST_FOR_EXCEPTION_H Functions for returning stacktrace info (GCC only initially).
TEUCHOSCORE_LIB_DLL_EXPORT void TestForException_setEnableStacktrace(bool enableStrackTrace)
Set at runtime if stacktracing functionality is enabled when * exceptions are thrown.
TEUCHOSCORE_LIB_DLL_EXPORT int TestForException_getThrowNumber()
Increment the throw number.
TEUCHOSCORE_LIB_DLL_EXPORT void TestForException_incrThrowNumber()
Increment the throw number.
TEUCHOSCORE_LIB_DLL_EXPORT void TestForException_break(const std::string &msg)
The only purpose for this function is to set a breakpoint.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
Defines basic traits returning the name of a type in a portable and readable way. ...
TEUCHOSCORE_LIB_DLL_EXPORT bool TestForException_getEnableStacktrace()
Get at runtime if stacktracing functionality is enabled when exceptions are thrown.