virtual std::string translateActiveException() const {
                try {
#ifdef __OBJC__
                    // In Objective-C try objective-c exceptions first
                    @try {
                        return tryTranslators();
                    }
                    @catch (NSException *exception) {
                        return Catch::toString( [exception description] );
                    }
#else
                    return tryTranslators();
#endif
                }
                catch (TestFailureException &) {
                    throw;
                }
                catch (std::exception &ex) {
                    return ex.what();
                }
                catch (std::string &msg) {
                    return msg;
                }
                catch (const char *msg) {
                    return msg;
                }
                catch (...) {
                    return "Unknown exception";
                }
            }
 virtual std::string translateActiveException
 ()
 const
 {
     try
     {
         throw;
     }
     catch( std::exception& ex )
     {
         return ex.what();
     }
     catch( std::string& msg )
     {
         return msg;
     }
     catch( const char* msg )
     {
         return msg;
     }
     catch(...)
     {
         return tryTranslators( m_translators.begin() );
     }
 }
 std::string tryTranslators
 (
     std::vector<IExceptionTranslator*>::const_iterator it
 ) 
 const
 {
     if( it == m_translators.end() )
         return "Unknown exception";
     
     try
     {
         return (*it)->translate();
     }
     catch(...)
     {
         return tryTranslators( it+1 );
     }
 }