IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Reprendre l'execution après un catch


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut Reprendre l'execution après un catch
    Bonjour,

    J'aimerai savoir si il est possible de reprendre l'execution apres un catch. Je m'explique il y a un bloc try catch qui emglobe le main de mon application, et en cas d'exception j'aimerai changer une variable, puis reprendre le cour de l'execution.

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Non, tu ne peux pas faire ça. Pour reprendre l'exécution après un catch il va falloir gérer plus finement cette exception, c'est à dire la catcher à l'endroit où tu penses pouvoir reprendre l'exécution.

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Il n'y aurai pas moyen de faire "joujou" avec la callstack pour relancer l'execution. Je suis desoler mais c'est enormement de code a rajouter si cela ne fonctionne pas.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Ce que tu demandes n'a pas vraiment de sens. Une exception a été levée qque part dans le programme, tu ne sais pas où. Quelle variable voudrais-tu changer puisque tu ne sais pas d'où a été lancée l'exception ? Dans ton catch tu ferais des tas de branchements pour en fonction de la stack décider de l'action à faire ? Ce serait moche, pas du tout orienté objet et très vite un énorme sac de noeuds, autant tout de suite gérer l'exception à l'endroit qu'il faut.

  5. #5
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Pour etre plus preci je m'explique. J'ai un dataset pour la connexion a une BD distante. Lors d'une execption du a un souci de connexion a la base j'aimerai passer avec une connexion en local (Je boss avec SQL Serveur Express qui ne gere pas la replication)

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    tu fais ce qu'il t'as dit, le try catch n'est pas obligé d'englober la totalité de ta sub
    et il est aussi possible de mettre des try catch dans un try catch

    donc tu fais un try catch qui n'aura qu'une ligne ou deux dans le try, juste pour tester la connexion, si tu arrives dans le catch, tu passes en local et le code continue après le catch dans le reste de la sub
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Citation Envoyé par themadmax Voir le message
    Pour etre plus preci je m'explique. J'ai un dataset pour la connexion a une BD distante. Lors d'une execption du a un souci de connexion a la base j'aimerai passer avec une connexion en local (Je boss avec SQL Serveur Express qui ne gere pas la replication)
    J'ai mis en gras le noeud du problème. Comment peux-tu savoir dans un catch global que l'exception à eu lieu spécifiquement ici ? Tu serais obligé de faire un tas de tests...

    Le mieux c'est de gérer l'exception au niveau de la méthode qui se connecte (ou de la méthode appelante, ça dépend de la "philosophie" de ton appli):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void Connect()
    {
       try
       {
          //Connexion distante
       }
       catch(Exception)
       {
          //impossible de se connecter à ta base distante, on tente en local
       }
    }
    Bien sûr si le code sur lequel tu travailles est mal organisé et qu'il n'y a pas une méthode "Connect" unique, alors ya du boulot de refactorisation à faire. Mais mieux vaut faire propre que de rajouter une couche d'horreur au dessus .

Discussions similaires

  1. execution aprés chaque minute
    Par helww dans le forum C++
    Réponses: 7
    Dernier message: 06/08/2007, 11h53
  2. Problème d'exécution après compilation
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 17/07/2007, 06h12
  3. [DOS] Reprendre la main après le lancement d'un programme
    Par kimz dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 28/05/2007, 23h58
  4. Réponses: 3
    Dernier message: 28/11/2006, 12h38
  5. [Sécurité] Script exécuté après paiement
    Par frol dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo