我正在使用'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;
}
}
当我尝试调试时,throwable
是SocketTimeoutException
中ConnectException
或CustomErrorHandler.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?
我正在使用
请帮帮我ㅠㅠ
答案 0 :(得分:0)
您可能已经知道SocketTimeException
和ConnectException
都是检查异常。如果您不想使用您发布的链接中规定的已检查异常来声明您的接口,那么您需要在返回之前将这两个异常包装到未经检查的异常中。