27 std::transform(s.begin(), s.end(), s.begin(),
37 , m_mode_exc (
ALL ), m_mode_err( NONE )
38 , m_log(msgSvc(), name )
61 if ( status.
isFailure() ) {
return status ; }
65 string::size_type loc = key.find(
" ");
67 if (loc == std::string::npos) {
70 mode = key.substr(0,loc);
77 }
else if (mode ==
"ALL") {
80 m_log <<
MSG::ERROR <<
"Unknown mode for Exception handling: \"" << mode
81 <<
"\". Default must be one of \"ALL\" or \"NONE\"" <<
endmsg;
86 if (loc == string::npos) {
89 key = key.substr(loc+1,key.length());
93 std::string val,VAL,TAG;
95 tok.
analyse( key,
" ",
"",
"",
"=",
"",
"");
97 for ( Tokenizer::Items::iterator
i = tok.
items().begin();
99 const std::string& tag = (*i).tag();
106 if (VAL ==
"SUCCESS") {
108 }
else if ( VAL ==
"FAILURE" ) {
110 }
else if ( VAL ==
"REVOVERABLE" ) {
112 }
else if ( VAL ==
"RETHROW" ) {
114 }
else if ( VAL ==
"DEFAULT" ) {
118 <<
"\" for Algorithm " << TAG << std::endl
119 <<
" Must be one of: DEFAULT, SUCCESS, FAILURE, RECOVERABLE, RETHROW"
126 <<
" -> action: " << VAL <<
endmsg;
135 if (loc == std::string::npos) {
138 mode = key.substr(0,loc);
143 if (mode ==
"NONE") {
145 }
else if (mode ==
"ALL") {
149 <<
"\". Default must be one of \"ALL\" or \"NONE\"" <<
endmsg;
154 if (loc == string::npos) {
157 key = key.substr(loc+1,key.length());
161 tok2.
analyse( key,
" ",
"",
"",
"=",
"",
"");
163 for ( Tokenizer::Items::iterator
i = tok2.
items().begin();
164 i != tok2.
items().end();
i++) {
165 const std::string& tag = (*i).tag();
172 if (VAL ==
"SUCCESS") {
174 }
else if ( VAL ==
"FAILURE" ) {
176 }
else if ( VAL ==
"RECOVERABLE" ) {
180 <<
"\" for Algorithm " << TAG << std::endl
181 <<
" Must be one of: SUCCESS, FAILURE, RECOVERABLE"
188 <<
" -> action: " << VAL <<
endmsg;
213 if (m_retCodesErr.find(alg.
name()) != m_retCodesErr.end()) {
233 if (m_mode_err ==
ALL) {
238 assert (m_mode_err == NONE );
253 if (m_retCodesExc.find(alg.
name()) != m_retCodesExc.end()) {
272 if (m_mode_exc ==
ALL) {
275 assert (m_mode_exc == NONE);
287 m_log <<
MSG::DEBUG <<
"Handling unknown exception for " << alg.
name()
296 const std::exception & exc )
const
298 m_log <<
MSG::DEBUG <<
"Handling std:except: \"" << exc.what() <<
"\" for "
301 return process(alg) ;
310 m_log <<
MSG::DEBUG <<
"Handling GaudiException: \"" << exc <<
"\" for "