2014-05-10 14 views
6

Ich verwende Retrofit, um Daten vom Server zu erhalten und zu posten. Allerdings, wenn mein Telefon verliert Internetverbindung in der Mitte der App dann sehe ich Fehler wie folgt aus:So behandeln Sie java.net.UnknownHostException während der Verwendung von Retrofit

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) 

ich graziös um diesen Fehler zu handhaben möchten. Ich möchte die Ausnahme abfangen und eine Toast-Nachricht wie "Keine Internetverbindung" anzeigen.

Ich versuche, Code wie dies, aber ich erhalte eine Fehlermeldung, dass: 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(); 
    } 

Antwort

5

Ich glaube, Sie brauchen eine Nachrüst-Ausnahme in dem Fang haben.

catch(RetrofitError error){ 
methodToDeterminErrorType(error); 
} 

Die RetroFitError ist eine generische Laufzeitausnahme. Sobald es den Catch-Block trifft, können Sie tatsächlich überprüfen, welche Art von Fehler tatsächlich durch Retrofit ausgelöst wurde. Retrofit hat eine Methode isNetworkError(), wonach Sie wahrscheinlich suchen. So kann man im Grunde so etwas tun:

methodToDeterminErrorType(RetroFitError error){ 
    if(error.isNetworkType()){ 
    //throw a toast 
     } 
    } 

Hoffnung, das hilft.

+0

Derzeit ist error.isNetworkType() veraltet. Verwenden Sie einfach error.getKind() == Kind.NETWORK – pgarriga

Verwandte Themen