Ant*_*ony 8 android android-internet
我正在使用改造来从服务器获取和发布数据.但是,如果我的手机在应用程序中间失去了互联网连接,那么我会看到如下错误:
05-10 08:12:05.559 29369-29400/? D/Retrofit? java.net.UnknownHostException: Unable to resolve host "my.server.com": No address associated with hostname
at java.net.InetAddress.lookupHostByName(InetAddress.java:394)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
Run Code Online (Sandbox Code Playgroud)
我想优雅地处理这个错误.我想抓住异常并显示像"没有互联网连接"这样的祝酒消息.
我正在尝试这样的代码,但我得到一个错误: java.net.UnknownHostException is never thrown in the try block
try {
isTokenValid = MyManager.INSTANCE.getService().validate();
}
catch (RetrofitError cause) {
Response r = cause.getResponse();
if (r != null && r.getStatus() == 403) {
isTokenValid = false;
}
}
catch (UnknownHostException exception) {
Toast.makeText(getBaseContext(), "No internet connection", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
我认为你需要在catch中有一个改进的例外.
catch (RetrofitError error) {
methodToDeterminErrorType(error);
}
Run Code Online (Sandbox Code Playgroud)
这RetroFitError是一个通用的运行时异常.一旦它碰到了catch块,你就可以实际验证改造后实际抛出了什么样的错误.Retrofit有一个isNetworkError()你可能正在寻找的方法.所以你基本上可以这样做:
methodToDetermineErrorType(RetroFitError error) {
if (error.isNetworkType()) {
// show a toast
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
4710 次 |
| 最近记录: |