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

Randy Abernethy commented on THRIFT-237:
----------------------------------------

Hello Jens,

I think you have it right. The goal is to have all Thrift language libraries 
implement a class called TException from which all other Thrift exceptions are 
derived. In general TException itself should be derived from the appropriate 
language specific built in exception class (if any). This is how things are 
organized in C++, Java and Python for example. C# does not have a TException, 
so TTransportException derives from System.Exception (a .net exception). As 
noted, the problem with this approach is that if you want to catch all Apache 
Thrift exceptions, you must list them out one by one in C#. If someone adds an 
exception you will be out of luck. 

In C++ the hierarchy looks like:
std::exception
     apache::thrift::TException
          apache::thrift::transport::TTransportException
          apache::thrift::protocol::TProtocolException
          apache::thrift::TApplicationException
          user defined exceptions in IDL

Java is similar:
java.lang.Throwable
     java.lang.Exception
          org.apache.thrift.TException
               etc.

Python:
BaseException
     Exception
          thrift.Thrift.TException
               etc.

Best,
Randy
                
> Update Exception class generation to TException decendent
> ---------------------------------------------------------
>
>                 Key: THRIFT-237
>                 URL: https://issues.apache.org/jira/browse/THRIFT-237
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C# - Compiler, Cocoa - Compiler, Java - Compiler, Python 
> - Compiler
>         Environment: Java
>            Reporter: Martin Smith
>            Priority: Trivial
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> Make all generated Exception objects derived classes of TExceptions instead 
> of Exceptions.  This allows callers to handle all errors of their service by 
> catching TException, eliminating the need for multiple catch blocks where not 
> required by the client code.
> This follows the more recent patterns set for C++, PHP, Perl.
> The languages affects are 
> Java, python, Cocoa, csharp
> This could negatively affect code where the base exception class TException 
> is handled prior to the generated exception classes.
> e.g. 
> try {
> } catch (TException te) {
> } catch (ThriftAppException tae) {
> }
> Patch available for Java, can build patches for python, cocoa and csharp at 
> the same time.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to