【问题标题】:Retrofit : Custom ErrorHandler, UndeclaredThrowableException改造:自定义 ErrorHandler、UndeclaredThrowableException
【发布时间】:2014-10-27 21:05:41
【问题描述】:

我正在使用“改造”进行 http 传输。

我制作了一个自定义ErrorHandler,如下面的代码。

public class CustomErrorHandler implements ErrorHandler {

    @Override
    public Throwable handleError( RetrofitError cause ) {

        if ( RetrofitError.Kind.NETWORK == cause.getKind() ) {

            Throwable throwable = cause.getCause();

            if ( throwable instanceof SocketTimeoutException )
                return throwable;
            else if ( throwable instanceof ConnectException )
                return throwable;
        }

        return cause;
    }

}

当我尝试调试时,throwableCustomErrorHandler.handleError()SocketTimeoutExceptionConnectException 的实例。

但是,下面的函数抛出UndeclaredThrowableException

private SignOutSuccessResponse trySignOut( String email, String userToken ) throws Exception {

    RestAdapter.Builder builder = new RestAdapter.Builder();
    builder.setEndpoint( ServerInfo.END_POINT_API );
    builder.setErrorHandler( new CustomErrorHandler() );

    if ( BuildConfig.DEBUG )
        builder.setLogLevel( RestAdapter.LogLevel.FULL );

    API sessionAPI = builder.build().create( API.class );
    return sessionAPI.signOut( email, userToken );
}

如果不是this way,我该如何解决这个问题?

我正在使用

  • Android 工作室
  • 改造 1.7.1
  • OkHttp 2.0.0

请帮帮我ㅠㅠ

【问题讨论】:

    标签: android retrofit


    【解决方案1】:

    SocketTimeExceptionConnectException 都是检查异常,您可能已经知道了。如果您不想使用您发布的链接中规定的检查异常来声明您的接口,那么您需要在返回它们之前将这两个异常包装成一个未经检查的异常。

    【讨论】:

    • 哦,我不知道SocketTimeExceptionConnectException 是“检查异常”。谢谢!
    猜你喜欢
    • 2014-08-28
    • 2015-09-13
    • 2014-04-11
    • 2018-02-06
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多