Problème exécution : application "disparaît" [Résolu]

nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 25 oct. 2013 à 14:58 - Dernière réponse : nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention
- 26 oct. 2013 à 16:32
Bonjour bonjour !

Voilà je viens faire part d'un problème que je rencontre actuellement qui me laisse quelque peu perplexe ^^ :
Je travail sur une application ayant pour but de communiquer avec un serveur web afin d'extraire des informations. Dans un cas particulier, j'encadre une partie de mon code d'un try/catch et déclenche la récursive en cas d'exception :
public void maFonction(Object[] data)
{
try
{
string pageHTML = objetWeb.Get("mon Url","Mes param get");
//--traitement des infos
}
catch( exception ) { maFonction(data); }
}


Vous vous en douterez, ce n'est pas la fonction réelle, mais ça reflète complètement cette dernière ;).

Donc le truc, c'est qu'à un moment donné, mon application (qui est lancé depuis visual studio en debug) "disparait" : pas d'exception, j'ai un point d'arrêt à la fermeture de l'application (main) => quedal, ca n'y passe pas ET le processus est bien mort (aucune présence dans mon gestionnaire de tâche).

Bon déjà j'ai eu du mal à voir que le problème venait d'ici, j'ai donc supposé que le try/catch pouvait devenir infini et je l'ai donc limité avec un compteur :
public void maFonction(Object[] data, int iEssai=0)
{
try
{
string pageHTML = objetWeb.Get("mon Url","Mes param get");
//--traitement des infos
}
catch( exception ) { if(iEssai<5)maFonction(data,++iEssai); }
}

et maintenant tout fonctionne .... mais tout de même, je ne comprends pas pour quelle raison aucunes exceptions n'était levée ni rien ... quelqu'un à t'il déjà été confronté à ce type de problème ? Quelqu'un aurai des idées/suggestions?

Merci d'avance ;)

naga
Afficher la suite 

Votre réponse

3 réponses

Whismeril 12026 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - Modifié par Whismeril le 25/10/2013 à 18:29
0
Merci
Bonsoir, il n'y a pas d'exception parce que la clause try catch est la pour gérer les exeptions!
Comme ta réponse à l'exeption c'est de refaire la même chose à un moment ça doit exploser!

Tu devrais mettres un point d'arrêt dans le catch pour regarder quelle type exception est levée quand tu n'as pas de réponse.
Ensuite tu écris deux catch, un qui gère ce type d'exception et un pour les autres dans lequel tu gères les autres.

Je tâche de te poster un exemple ce soir.
Commenter la réponse de Whismeril
Whismeril 12026 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 25 oct. 2013 à 21:46
0
Merci
Dans mon exemple on tente de diviser 2 par ce qui est écrit dans textBox2:

            try
{
int i = Convert.ToInt32(textBox2.Text);
double resultat = 2 / i;
}
catch (FormatException)//si la boite est vide
{
MessageBox.Show("le texte dans la boite n'est pas convertible en chiffre");
}
catch (DivideByZeroException)//si 0 est saisi
{
MessageBox.Show("Division par zéro impossible");

}
catch (Exception e)//autre erreur
{
MessageBox.Show(e.Message);
}
Commenter la réponse de Whismeril
nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 26 oct. 2013 à 16:32
0
Merci
re !

j'ai fais ce code :

public void run(int a)
{
try { throw new exception("jj");}
catch(Exception){this.run(++a);}
}


ca m'a permis de voir qu'avec le temps il y a des fuites mémoires, mais bon ce n'est pas la question ^^.

pour répondre à vos réponses :
 il n'y a pas d'exception parce que la clause try catch est la pour gérer les exeptions! 


oui mais mon problème était que je ne sortais pas de l'application ou rien, elle se coupait juste de manière anormal sans que quelque info que ce soit n'existe (j'avais un point d'arrêt à ma sortie de programme et rien).


Bref je suppose que windows (l'os donc) stoppait le processus par sécurité : la seule manière pour que rien ne soit levé ou qu'on ne sorte pas du programme via le main, est de killer le processus donc ..

si quelqu'un à des explications, ca m'intéresse, mais la cause de mon problème est résolut ;)

merci.
naga
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.