[ 
https://issues.apache.org/jira/browse/THRIFT-2717?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14295383#comment-14295383
 ] 

Bastiaan Stougie commented on THRIFT-2717:
------------------------------------------

A proposal for an additional small improvement for C++.

For any generated exception class, e.what() currently always returns "Default 
TException.". Instead, the generated code of the exception class could 
implement a what() that returns a string with the actual (namespace and) name 
of the exception class in it.

This change would make it possible to catch a base class, for example 
::apache::thrift::TException, and to log something that identifies the exact 
exception type.

Typical use case: additional exception types may be introduced in a thrift spec 
that some existing code that uses an API may not be aware of yet. If the 
existing code can log the exception type by catching a base class, this would 
help a lot with debugging.


> C++V2 generator/library
> -----------------------
>
>                 Key: THRIFT-2717
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2717
>             Project: Thrift
>          Issue Type: New Feature
>          Components: C++ - Compiler
>            Reporter: Konrad Grochowski
>
> instead of adding another set of options to 'old' cpp generator I've started 
> creating new one in:
> https://github.com/hcorg/thrift/tree/cpp_v2
> using old as an reference
> main goals (for generator):
>  * code compatible with old librart (at least for first tests, new lib and 
> compiler switches can be added later)
>  * no more ugly {{__isset}} structure -> boost::optional for optional values
>  * as a result - no more {{__}} in names, which violates C++ standard
>  * all generation code will have own unit tests (TDD used wherever possible)
>  * generated types headers independent from Thrift header, to allow other 
> layers of application using generated types without dependency leaks
>  * each type will generate own header/cpp file - easier for user to include 
> only used parts.
>  * unordered map/sets
>  * returning using move semantics, no more ugly 'return via output parameter' 
> (still possible as option thou - sometimes it's needed for performance)
>  * async client using boost::future
>  * enum classes
>  * initializer lists for constants (maybe)
> main goals (for library):
>  * minimizing boost deps
>  * using C++11 features to simplify lib
>  * be base for new generator
> I'm aiming in C++11 subset available in gcc 4.8 and MSVC 2013
> currently I have only complete enum generation, but work is in progress
> all comments etc are very welcome :)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to