2014-05-10 13 views
6

का उपयोग करते समय java.net को संभालने के लिए अज्ञातहोस्ट अपवाद। मैं सर्वर से डेटा प्राप्त करने और पोस्ट करने के लिए रेट्रोफिट का उपयोग कर रहा हूं। हालांकि, अनुप्रयोग के बीच में मेरे फोन खो देता है इंटरनेट कनेक्शन तो मैं त्रुटि इस तरह देखें: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) 

मैं शान से इस त्रुटि को संभालने के लिए चाहते हैं। मैं अपवाद पकड़ना चाहता हूं और "कोई इंटरनेट कनेक्शन" जैसे टोस्ट संदेश दिखाना चाहता हूं।

मैं इस तरह कोड कोशिश कर रहा हूँ, लेकिन मैं एक त्रुटि है कि मिल: 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(); 
    } 

उत्तर

5

मैं तुम्हें पकड़ में एक पुराना वापस अपवाद की आवश्यकता है लगता है।

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

RetroFitError एक सामान्य रनटाइम अपवाद है। एक बार यह कैच ब्लॉक हिट करने के बाद आप वास्तव में सत्यापित कर सकते हैं कि वास्तव में किस प्रकार की त्रुटि को रेट्रोफिट द्वारा फेंक दिया गया था। रेट्रोफिट में एक विधि isNetworkError() है जो आप शायद ढूंढ रहे हैं।

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

आशा इस मदद करता है: तो तुम मूल रूप से कुछ इस तरह कर सकते हैं।

+0

अभी, error.isNetworkType() को बहिष्कृत किया गया है। बस त्रुटि का उपयोग करें .getKind() == Kind.NETWORK – pgarriga

संबंधित मुद्दे

 संबंधित मुद्दे