CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Erreur impossible à gérer

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
[jack-sparrow]
[jack-sparrow]
Niveau 7
02 mars 2013 à 17:29:27

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 :

public static String getsource(String url)
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreConnectio
nPNames.SO_TIMEOUT,
10000);
httpclient.getParams().setParameter(CoreConnectio
nPNames.CONNECTION_TIMEOUT,
10000);
httpclient.getParams().setParameter(ClientPNames.
COOKIE_POLICY,
"ignoreCookies");

HttpGet httpget = new HttpGet(url);
StringBuilder source = new StringBuilder();
String resa = null;

try
{
HttpResponse response = httpclient.execute(httpget);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(
)));

long ms = System.currentTimeMillis();
boolean timeout_over = false;
String line;

while ((line = reader.readLine()) != null && !timeout_over)
{
source.append(line+"\r\n");
if(System.currentTimeMillis()-ms>10000)
{ timeout_over = true; }
}

if(timeout_over)
{
resa = "Erreur";
System.out.println("Timeout Over");
httpget.abort();
}
else
{ resa = source.toString().trim(); }

}
catch(IOException ioe)
{
resa = "Erreur";
System.out.println("IO exception");
}
catch(Exception e)
{
resa = "Erreur";
System.out.println("Exception");
}

return resa;
}

Merci d'avance pour votre aide !

Bonne journée ! :)

HerveGhesquiere
HerveGhesquiere
Niveau 10
03 mars 2013 à 01:03:13

Je ne sais pas si cette exception existe, je fais pas de Java, mais si tu fais "catch(SocketException){ /* ... */ }", ça devrait le faire non ?

[jack-sparrow]
[jack-sparrow]
Niveau 7
03 mars 2013 à 13:15:27

Salut !

J'ai déjà essayé mais cela ne fonctionne pas.
Les SocketException sont de plus comprises dans les IOexception donc normalement je suis censé déjà les gérer. :/

Merci quand même d'avoir proposé ton idée :)

[jack-sparrow]
[jack-sparrow]
Niveau 7
03 mars 2013 à 17:03:42

Tu veux dire rajouter un catch(HttpException ex) juste avant le catch(IOException ioe) ?

Si c'est ça j'ai l'erreur "This exception is never thrown from the try statement body".

J'ai essayé la même chose avec HTTPException (HTTP en majuscule, au cas où tu aurais fait une erreur de frappe) et là y'a plus d'erreur à la compilation mais ça ne change rien, l'erreur n'est toujours pas interceptée. :/

_skip
_skip
Niveau 10
03 mars 2013 à 17:43:28

INFO: I/O exception (java.net.SocketException) caught when processing request: Connection reset
C'est le logger qui imprime ça dans la console. Je développerai bien mais la dernière fois que je t'ai répondu t'en as rien eu à foutre.

[jack-sparrow]
[jack-sparrow]
Niveau 7
03 mars 2013 à 18:14:55

J'admets que c'était pas malin de ma part de pas avoir répondu mais c'est juste que comme ça fonctionnait j'ai pensé qu'il valait mieux laisser couler le topic plutôt que le faire remonter en haut de liste. (oui je sais, c'est la pire excuse du monde, mais j'ai réellement eu cette réflexion ^^)

Je me suis rendu compte après quelques recherches que ce n'étaient pas des message d'erreur mais des message du type "INFO", et que ces messages n'étaient pas synonymes d'erreur dans le programme.

Je cite un site anglais :
It's clearly tagged as 'INFO', as in an informational message, and not indicative of any problem with the code?" I find that this question often comes from users of Eclipse, and that the Eclipse console has colored the message red, and people are so conditioned to see "red == bad" that they react to the format of the message rather than the content. The content of the message is flagged at a level that means, "Hey, nothing is wrong, we're just telling you about it."

Etant donné que ça prend beaucoup de place et que ça gêne la lecture des données sous eclipse, je souhaiterai ne plus afficher ces messages d'info. Comment puis-je faire pour désactiver ces messages d'information sous eclipse ?

_skip
_skip
Niveau 10
03 mars 2013 à 18:50:37

Si c'est bien la version que tu as, ils te disent comment régler les logs ici :
http://hc.apache.org/httpclient-3.x/logging.html

[jack-sparrow]
[jack-sparrow]
Niveau 7
03 mars 2013 à 19:48:12

Bon j'ai mis un fichier log4j.properties dans mon dossier workspace/monprojet/ contenant :

log4j.rootLogger=INFO

log4j.appender.stdout=org.apache.log4j.ConsoleAppe
nder

log4j.appender.stdout.layout=org.apache.log4j.Patt
ernLayout

log4j.appender.stdout.layout.ConversionPattern=%5p

[%c] %m%n

log4j.logger.httpclient.wire.header=DEBUG
log4j.logger.org.apache.commons.httpclient=DEBUG

Mais pas d'amélioration.

J'ai manqué quelque chose ?

_skip
_skip
Niveau 10
04 mars 2013 à 08:02:47

Tu utilises log4j?

[jack-sparrow]
[jack-sparrow]
Niveau 7
04 mars 2013 à 19:00:31

Moi non mais n'est ce pas cela que le httpclient utilise ?

_skip
_skip
Niveau 10
04 mars 2013 à 19:53:16

je sais pas quelle version tu as, mais autant que je m'en souvienne, c'était apache commons logging.

[jack-sparrow]
[jack-sparrow]
Niveau 7
08 avril 2013 à 19:23:41

Désolé du temps de réponse, un événement imprévu m'a un peu détourné de mon projet. ^^

Après mes quelques recherches je crois bien que c'est effectivement apache commons logging. (bien que je n'en sois pas certain à 100%)

Que faut-il changer à mon fichier pour que cela s'applique a apache commons logging ?

_skip
_skip
Niveau 10
08 avril 2013 à 19:30:49

En fait apache commons logging c'est une librairie de logging générique dont l'intérêt est de pouvoir "se brancher" sur une implémentation de ton choix.

C'est utilisé typiquement par des auteurs de librairie qui ont besoin de logger des messages mais qui veulent pas te forcer, toi l'utilisateur de la librairie, à utiliser un système plutôt qu'un autre (log4j, logback ou autre).

Donc JCL essaie de détecter quel système de log est présent d'après une procédure détaillée ici :
http://commons.apache.org/proper/commons-logging/guide.html

Et s'il trouve rien, il balance tout dans system.err.

[jack-sparrow]
[jack-sparrow]
Niveau 7
09 avril 2013 à 20:37:24

Merci !

Problème résolu ! :)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware