一不小心直接把:HTTP FAILED: java.net.ConnectException: Failed to connect to 抛给用户了.当然这是服务器无响应啊.
但是这样并不友好.
关键是前面做了一系列的处理竟然没有一个拦截到的
debug一下发现 是ConnectException.
java.net
Class ConnectException
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.io.IOException
-
- java.net.SocketException
-
- java.net.ConnectException
而我拦截是使用的是
package retrofit2;
import static retrofit2.Utils.checkNotNull;
/** Exception for an unexpected, non-2xx HTTP response. */
public class HttpException extends RuntimeException {...}
retrofit2中
HttpException 的继承图这样的:
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.lang.RuntimeException
- HttpException
如下拦截:
if (e instanceof HttpException) {...}
明显接不到啊.....
只好加上
else if (e instanceof ConnectException) {...}
处理一下.