Retrofit:自定义ErrorHandler,UndeclaredThrowableException

时间:2014-10-27 07:36:09

标签: android retrofit

我正在使用'Retrofit'进行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;
    }

}

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

但是,在fucntion下面会抛出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 studio
  • 改造1.7.1
  • OkHttp 2.0.0

请帮帮我ㅠㅠ

1 个答案:

答案 0 :(得分:0)

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