Używam modernizacji do pobierania i publikowania danych z serwera. Jednakże, jeśli mój telefon traci połączenie z Internetem w środku aplikacji potem widzę błąd tak:Jak obsłużyć wyjątek java.net.UnknownHostException podczas korzystania z modernizacji
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)
chciałbym obsłużyć ten błąd wdziękiem. Chciałbym złapać wyjątek i pokazać komunikat przypominający tostę, np. "Brak połączenia z Internetem".
próbuję kod jak poniżej, ale pojawia się błąd, że: 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();
}
Obecnie error.isNetworkType() jest przestarzałe. Po prostu użyj error.getKind() == Kind.NETWORK – pgarriga