Class

com.twitter.finatra.thrift.exceptions

FinatraThriftExceptionMapper

Related Doc: package exceptions

Permalink

class FinatraThriftExceptionMapper extends ExceptionMapper[Exception, ThriftException] with Logging

A generic com.twitter.finatra.thrift.exceptions.ExceptionMapper over the java.lang.Exception exception type. This mapper attempts to translate other exceptions to declared finatra-thrift/finatra_thrift_exception.thrift exceptions.

If you include the finatra-thrift/finatra_thrift_exception.thrift file in your thrift service IDL and declare any of your service methods to throw one or more of the defined thrift exceptions, i.e.,

finatra_thrift_exceptions.ClientError
finatra_thrift_exceptions.NoClientIdError
finatra_thrift_exceptions.ServerError
finatra_thrift_exceptions.UnknownClientIdError

using the FinatraThriftExceptionMapper will translate any Throwable into one of the finatra_thrift_exceptions where appropriate for responding to the client.

Exceptions returned from a thrift service which are not declared in the thrift IDL are returned as a generic TApplicationException.

Usage

In your myservice.thrift, include the finatra-thrift/finatra_thrift_exception.thrift thrift IDL:

namespace java com.my_org.myservice.thriftjava
#@namespace scala com.my_org.myservice.thriftscala

include "finatra-thrift/finatra_thrift_exceptions.thrift"

Then in your MyService definition, declare methods to throw finatra_thrift_exceptions:

service MyService {

  string function1(
    1: string msg
  ) throws (
    1: finatra_thrift_exceptions.ServerError serverError,
    2: finatra_thrift_exceptions.UnknownClientIdError unknownClientIdError
    3: finatra_thrift_exceptions.NoClientIdError noClientIdError
  )

Adding this ExceptionMapper into your server will thus translate any of the handled exceptions into a form that will serialize appropriately to the client.

Note, you can also mix usage with your own declared exception(s), e.g.,

exception MyServiceException {
  1: string message
}

Then in your MyService definition,

service MyService {

  string function1(
    1: string msg
  ) throws (
    1: finatra_thrift_exceptions.ServerError serverError,
    2: finatra_thrift_exceptions.UnknownClientIdError unknownClientIdError
    3: finatra_thrift_exceptions.NoClientIdError noClientIdError
    4: MyServiceException myServiceException
  )

You could then register an additional ExceptionMapper to translate Throwables into MyServiceException as desired or return the exception directly from implemented methods.

Annotations
@Singleton()
Note

This is only applicable in scala since the FinatraThriftExceptionMapper uses scala generated classes for the exceptions. We recommend for users including the finatra-thrift/finatra_thrift_exception.thrift register this mapper in their scala Servers.

See also

Using Finagle Thrift

Finatra Thrift Exception Mapping

src/main/thrift/finatra-thrift/finatra_thrift_exception.thrift

Linear Supertypes
Logging, Logging, ExceptionMapper[Exception, ThriftException], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FinatraThriftExceptionMapper
  2. Logging
  3. Logging
  4. ExceptionMapper
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new FinatraThriftExceptionMapper()

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def debug(marker: Marker, message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  7. def debug(message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  8. def debug(marker: Marker, message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  9. def debug(message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  10. def debugFutureResult[T](msg: String)(func: ⇒ Future[T]): Future[T]

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  11. def debugResult[T](message: ⇒ String)(fn: ⇒ T): T

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  12. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  14. def error(marker: Marker, message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  15. def error(marker: Marker, message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  16. def error(message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  17. def error(message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  18. def errorResult[T](message: ⇒ String)(fn: ⇒ T): T

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  19. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  20. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  21. def handleException(throwable: Exception): Future[ThriftException]

    Permalink

    Handles an exception of type T and maps it to a new Future

    Handles an exception of type T and maps it to a new Future

    throwable

    - the Exception T to handle

    returns

    a new Future mapped from the Throwable

    Definition Classes
    FinatraThriftExceptionMapperExceptionMapper
  22. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  23. def info(marker: Marker, message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  24. def info(message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  25. def info(marker: Marker, message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  26. def info(message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  27. def infoResult[T](message: ⇒ String)(fn: ⇒ T): T

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  28. def isDebugEnabled(marker: Marker): Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  29. def isDebugEnabled: Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  30. def isErrorEnabled(marker: Marker): Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  31. def isErrorEnabled: Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  32. def isInfoEnabled(marker: Marker): Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  33. def isInfoEnabled: Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  34. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  35. def isTraceEnabled(marker: Marker): Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  36. def isTraceEnabled: Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  37. def isWarnEnabled(marker: Marker): Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  38. def isWarnEnabled: Boolean

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  39. def logger: Logger

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  40. def loggerName: String

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  41. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  42. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  43. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  44. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  45. def time[T](formatStr: String)(func: ⇒ T): T

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  46. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  47. def trace(marker: Marker, message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  48. def trace(message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  49. def trace(marker: Marker, message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  50. def trace(message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  51. def traceResult[T](message: ⇒ String)(fn: ⇒ T): T

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  52. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  53. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  54. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. def warn(marker: Marker, message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  56. def warn(message: ⇒ Any, cause: Throwable): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  57. def warn(marker: Marker, message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  58. def warn(message: ⇒ Any): Unit

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging
  59. def warnResult[T](message: ⇒ String)(fn: ⇒ T): T

    Permalink
    Attributes
    protected[this]
    Definition Classes
    Logging

Inherited from Logging

Inherited from Logging

Inherited from ExceptionMapper[Exception, ThriftException]

Inherited from AnyRef

Inherited from Any

Ungrouped