Erreur impossible à gérer

Erreur impossible à gérer - Java - Programmation

Marsh Posté le 02-03-2013 à 17:30:41    

Bonjour !
 
J'utilise une fonction qui permet de récupérer le code source d'un site.
Pour 99% des sites, elle fonctionne, mais parfois j'obtiens cette erreur :
 
1 mars 2013 17:34:10 org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Connection reset
1 mars 2013 17:34:10 org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request
 
Je ne cherche pas à corriger l'erreur, puisqu'elle est sûrement causée par les sites dont j'essaye de récupérer le code source.
Je cherche plutôt à afficher un petit message du type "Le site est indisponible" à la place du gros message d'erreur rouge.
 
Ce que je ne comprends pas c'est que j'ai l'impression de gérer toutes les exceptions qui peuvent arriver, donc comment cela se fait-il que cette erreur survienne ?
 
Voici le code de la fonction qui permet de récupérer le code source d'une page :
 

Code :
  1. public static String getsource(String url)
  2. {
  3. HttpClient httpclient = new DefaultHttpClient();
  4. httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
  5. httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
  6. httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, "ignoreCookies" );
  7. HttpGet httpget = new HttpGet(url);
  8. StringBuilder source = new StringBuilder();
  9. String resa = null;
  10. try
  11. {
  12.  HttpResponse response = httpclient.execute(httpget);
  13.  BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
  14.         long ms = System.currentTimeMillis();
  15.         boolean timeout_over = false;
  16.         String line;
  17.        
  18.         while ((line = reader.readLine()) != null && !timeout_over)
  19.         {
  20.          source.append(line+"\r\n" );
  21.          if(System.currentTimeMillis()-ms>10000)
  22.          { timeout_over = true; }
  23.         }
  24.  if(timeout_over)
  25.  {
  26.   resa = "Erreur";
  27.   System.out.println("Timeout Over" );
  28.   httpget.abort();
  29.  }
  30.  else
  31.  { resa = source.toString().trim(); }
  32.        
  33. }
  34. catch(IOException ioe)
  35. {
  36.  resa = "Erreur";
  37.  System.out.println("IO exception" );
  38. }
  39. catch(Exception e)
  40. {
  41.  resa = "Erreur";
  42.  System.out.println("Exception" );
  43. }
  44. return resa;
  45. }


 
Merci d'avance pour votre aide !
 
Bonne journée ! :)

Reply

Marsh Posté le 02-03-2013 à 17:30:41   

Reply

Marsh Posté le 04-03-2013 à 11:02:16    

Tu as toute une série d'instructions en dehors du bloc try...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed