42 #ifndef TEUCHOS_STANDARD_CATCH_MACROS_HPP 43 #define TEUCHOS_STANDARD_CATCH_MACROS_HPP 46 #include "Teuchos_FancyOStream.hpp" 49 #include "Teuchos_Assert.hpp" 52 #ifdef HAVE_TEUCHOS_STACKTRACE 53 # define TEUCHOS_GET_STORED_STACKTRACE() \ 54 (Teuchos::TestForException_getEnableStacktrace() \ 55 ? Teuchos::get_stored_stacktrace() + "\n" \ 58 # define TEUCHOS_GET_STORED_STACKTRACE() "" 65 #define TEUCHOS_STANDARD_CATCH_STATEMENTS_IMPL(VERBOSE, ERR_STREAM, \ 66 SHOW_STACK_TRACE, SUCCESS_FLAG \ 68 catch (const std::exception &excpt) { \ 70 std::ostringstream oss; \ 72 << "\np="<<::Teuchos::GlobalMPISession::getRank() \ 73 <<": *** Caught standard std::exception of type \'" \ 74 <<Teuchos::concreteTypeName(excpt)<<"\' :\n\n"; \ 75 Teuchos::OSTab scsi_tab(oss); \ 76 if (SHOW_STACK_TRACE) { \ 77 scsi_tab.o() << TEUCHOS_GET_STORED_STACKTRACE(); \ 79 scsi_tab.o() << excpt.what() << std::endl; \ 80 (ERR_STREAM) << std::flush; \ 81 (ERR_STREAM) << oss.str(); \ 82 (SUCCESS_FLAG) = false; \ 85 catch (const int &excpt_code) { \ 87 std::ostringstream oss; \ 89 << "\np="<<::Teuchos::GlobalMPISession::getRank() \ 90 << ": *** Caught an integer exception with value = " \ 91 << excpt_code << std::endl; \ 92 (ERR_STREAM) << std::flush; \ 93 (ERR_STREAM) << oss.str(); \ 94 (SUCCESS_FLAG) = false; \ 99 std::ostringstream oss; \ 100 oss << "\np="<<::Teuchos::GlobalMPISession::getRank() \ 101 <<": *** Caught an unknown exception\n"; \ 102 (ERR_STREAM) << std::flush; \ 103 (ERR_STREAM) << oss.str(); \ 104 (SUCCESS_FLAG) = false; \ 136 #define TEUCHOS_STANDARD_CATCH_STATEMENTS(VERBOSE, ERR_STREAM, SUCCESS_FLAG) \ 137 TEUCHOS_STANDARD_CATCH_STATEMENTS_IMPL(VERBOSE, ERR_STREAM, true, SUCCESS_FLAG) 140 #endif // TEUCHOS_STANDARD_CATCH_MACROS_HPP Functions for returning stacktrace info (GCC only initially).
A MPI utilities class, providing methods for initializing, finalizing, and querying the global MPI se...
Defines basic traits returning the name of a type in a portable and readable way. ...