首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改装:自定义ErrorHandler,UndeclaredThrowableException

改装:自定义ErrorHandler,UndeclaredThrowableException
EN

Stack Overflow用户
提问于 2014-10-27 07:36:09
回答 1查看 1.5K关注 0票数 1

我用“Retrofit”进行http传输。

我做了一个定制的ErrorHandler,类似于下面的代码。

代码语言:javascript
运行
复制
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()中的实例。

但是,下面的函数抛出了UndeclaredThrowableException

代码语言:javascript
运行
复制
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

请帮我ㅠㅠ

EN

Stack Overflow用户

回答已采纳

发布于 2014-10-27 12:27:38

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

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26582878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档