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

Jens Geyer edited comment on THRIFT-2343 at 2/4/14 10:30 PM:
-------------------------------------------------------------

Too quick. The tutorial and any other service containing methods without any 
exception is broken:

{code}
shared\shared_service.go:178: v declared and not used
{code}




was (Author: jensg):
Too quick. The tutorial is broken:

{code}
shared\shared_service.go:178: v declared and not used
{code}



> Golang - Return a single error for all exceptions instead of multiple return 
> values
> -----------------------------------------------------------------------------------
>
>                 Key: THRIFT-2343
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2343
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Go - Compiler
>    Affects Versions: 0.9.1
>            Reporter: Chris Bannister
>            Assignee: Jens Geyer
>             Fix For: 0.9.2
>
>         Attachments: 
> 0001-Only-expose-returning-a-single-error-return-in-Go.patch, 
> 0002-go-processor-exceptions-are-treated-as-one-error.patch
>
>
> Currently the Thrift compiler for Go generates some very ugly (by Go's 
> standard) code for method calls. This is because of the fact that Go does not 
> have exceptions.
> My proposal is to change the way the exceptions are handled in Go, instead of 
> returning each exception explicitly as a return value, instead return the 
> exceptions as a single error return. This has another benefit that Go servers 
> will no longer be able to 'throw' multiple exceptions, previously you could 
> assign an error to all the defined exceptions of a method which shouldn't be 
> possible.
> This change relies on the fact that the exceptions generated by Thrift 
> implement the Error interface, which they now do (in 0.9.2).
> It has the downside that the exceptions thrown to a client calling a thrift 
> method are no longer immediately visible. But this is the same way the Go 
> standard library handles it so it shouldn't be a problem.
> It changes the generated interface so it will break backwards compatibility, 
> but as 0.9.2 is already breaking backwards compatibility this shouldn't be a 
> huge problem, but should be considered.
> The proposed changes change the Processor methods for each method, doing a 
> type switch against all the defined exceptions for the method. The 
> fallthrough case is the same INTERNAL_SERVER_ERROR exception.
> Please consider this a RFC.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to