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

Henrique Mendonça commented on THRIFT-1990:
-------------------------------------------

Hi Nick,
Could you have a look on 
https://github.com/apache/thrift/tree/master/test/nodejs ?
Your example works for me, did you declare your exception for this method you 
are testing?
like: void testException(1: string arg) throws(1: NotFoundException err1)

anyways, if you have a fix for this or anything else please read: 
http://thrift.apache.org/docs/HowToContribute/
Thank you,
Henrique
                
> Node.js Exceptions Don't Work
> -----------------------------
>
>                 Key: THRIFT-1990
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1990
>             Project: Thrift
>          Issue Type: Bug
>          Components: Node.js - Library
>    Affects Versions: 0.7, 0.9, 1.0
>         Environment: Ubuntu 13.04, Node.js v0.8.14
>            Reporter: Nick Daugherty
>
> Exception passing / handling doesn't seem to be working in the Node.js 
> library. If the Thrift server throws an exception, the client code does not 
> see an error, and instead is passed a return value. The expected behavior is 
> a server Exception would be exposed as 'err', the first argument to the 
> client callback. 
> Have verified using my own code and the supplied example code by adding a 
> simple Exception type to my .thrift file, regenerating, then stubbing out the 
> server methods to always error.
> Have tried all transports, using the multitransport examples.
> For example, with the following exception definition:
> exception NotFoundException {
>       1: string message
> }
> and the following server method implementation:
> var store = function(user, result) {
>       return result(new ttypes.NotFoundException({message:'failed!'}));
> };
> This client invocation will never receive an error in the callback, and will 
> in fact be passed an empty instance of whatever the return value is supposed 
> to be. For example, if a method returns a custom data type, the callback 
> receives an instance of the custom data type with all members set to null.
> f_client.store(user1, function(err, response) {
>   if (err) { console.error(err); return; } // This never actually happens, 
> because err is always null!
>   console.log("stored:", user1.uid, " as ", user1.name);
>   b_client.retrieve(user1.uid, function(err, responseUser) {
>     if (err) { console.error(err); return; }
>     console.log("retrieved:", responseUser.uid, " as ", responseUser.name);
>   });
> });
> I noticed that the Exception objects seem to be written to the wire correctly 
> - in the generated js file, the Exception class's .write() method appears to 
> fire correctly. However, the .read() never goes off, so it's getting lost 
> somewhere in between.
> Shouldn't matter, but the client and server are both on the same machine.

--
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