mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Translate exceptions by const reference instead of plain ref
This commit is contained in:
		| @@ -64,7 +64,7 @@ namespace Catch { | ||||
| By default all exceptions deriving from `std::exception` will be translated to strings by calling the `what()` method. For exception types that do not derive from `std::exception` - or if `what()` does not return a suitable string - use `CATCH_TRANSLATE_EXCEPTION`. This defines a function that takes your exception type, by reference, and returns a string. It can appear anywhere in the code - it doesn't have to be in the same translation unit. For example: | ||||
|  | ||||
| ```cpp | ||||
| CATCH_TRANSLATE_EXCEPTION( MyType& ex ) { | ||||
| CATCH_TRANSLATE_EXCEPTION( MyType const& ex ) { | ||||
|     return ex.message(); | ||||
| } | ||||
| ``` | ||||
|   | ||||
| @@ -12,7 +12,7 @@ namespace Catch { | ||||
|         class ExceptionTranslator : public IExceptionTranslator { | ||||
|         public: | ||||
|  | ||||
|             ExceptionTranslator( std::string(*translateFunction)( T& ) ) | ||||
|             ExceptionTranslator( std::string(*translateFunction)( T const& ) ) | ||||
|             : m_translateFunction( translateFunction ) | ||||
|             {} | ||||
|  | ||||
| @@ -24,7 +24,7 @@ namespace Catch { | ||||
|                     else | ||||
|                         return (*it)->translate( it+1, itEnd ); | ||||
|                 } | ||||
|                 catch( T& ex ) { | ||||
|                 catch( T const& ex ) { | ||||
|                     return m_translateFunction( ex ); | ||||
|                 } | ||||
| #else | ||||
| @@ -33,12 +33,12 @@ namespace Catch { | ||||
|             } | ||||
|  | ||||
|         protected: | ||||
|             std::string(*m_translateFunction)( T& ); | ||||
|             std::string(*m_translateFunction)( T const& ); | ||||
|         }; | ||||
|  | ||||
|     public: | ||||
|         template<typename T> | ||||
|         ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { | ||||
|         ExceptionTranslatorRegistrar( std::string(*translateFunction)( T const& ) ) { | ||||
|             getMutableRegistryHub().registerTranslator | ||||
|                 ( new ExceptionTranslator<T>( translateFunction ) ); | ||||
|         } | ||||
|   | ||||
| @@ -122,15 +122,15 @@ TEST_CASE( "When unchecked exceptions are thrown, but caught, they do not affect | ||||
| } | ||||
|  | ||||
|  | ||||
| CATCH_TRANSLATE_EXCEPTION( CustomException& ex ) { | ||||
| CATCH_TRANSLATE_EXCEPTION( CustomException const& ex ) { | ||||
|     return ex.getMessage(); | ||||
| } | ||||
|  | ||||
| CATCH_TRANSLATE_EXCEPTION( CustomStdException& ex ) { | ||||
| CATCH_TRANSLATE_EXCEPTION( CustomStdException const& ex ) { | ||||
|     return ex.getMessage(); | ||||
| } | ||||
|  | ||||
| CATCH_TRANSLATE_EXCEPTION( double& ex ) { | ||||
| CATCH_TRANSLATE_EXCEPTION( double const& ex ) { | ||||
|     return Catch::Detail::stringify( ex ); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský