Ryan Greenberg created THRIFT-2403:
--------------------------------------
Summary: Differentiate various TransportExceptions as separate
classes
Key: THRIFT-2403
URL: https://issues.apache.org/jira/browse/THRIFT-2403
Project: Thrift
Issue Type: Improvement
Components: Ruby - Library
Reporter: Ryan Greenberg
The Ruby thrift library raises Thrift::TransportException of three different
types (NOT_OPEN, TIMED_OUT, UNKNOWN), which client libraries may want to handle
in different ways. Since rescuing in Ruby is specified by exception class,
providing different behavior for the different types requires rescuing all
transport exceptions and checking the type.
Would the project consider introducing separate subclasses of
Thrift::TransportException for the current types? Specifically:
{code}
class Thrift::TransportException::NotOpen < Thrift::TransportException
class Thrift::TransportException::TimedOut < Thrift::TransportException
class Thrift::TransportException::Unknown < Thrift::TransportException
{code}
This change would allow you to rewrite this code:
{code}
begin
...
rescue Thrift::TransportException => ex
if ex.type == Thrift::TransportException::NOT_OPEN
...
else
raise ex
end
end
{code}
as:
{code}
begin
...
rescue Thrift::TransportException::NotOpen
...
end
{code}
Backwards compatibility could be maintained by continuing to provide the type
via the {{.type}} method, and by having Thrift::TransportException::NotOpen et.
al. subclass Thrift::TransportException.
See https://github.com/twitter/thrift_client/issues/56 for additional
background.
--
This message was sent by Atlassian JIRA
(v6.2#6252)