2010-06-11 3 views
-4

salut j'ai une question j'ai un code qui fonctionne bien sur comme 70% des ordinateurs je l'utilise mais .. pour une raison quelconque il y a quelques-uns qui sont embêtants et id aiment faire quelque chose comme ça (garder à l'esprit c'est un hypothétique)Si aucune erreur contiune .. si l'erreur se produit faire d'autre

private void test_click(object sender, EventArgs e) 
{ 
    MessageBox.Show("hi"); 
    //if it works ok without a error it continues to 
    MessageBox.Show("worked ok"); 
    //if it encountered a error of some kind it would go to 
    MessageBox.Show("DID NOT WORK OK"); 
} 
+0

Ok, mais qu'est-ce que vous avez besoin d'aide? – nos

+0

pourriez-vous être plus précis sur la question? – Chinjoo

+2

70 pour cent? pas mal! – anthony

Répondre

4

Qu'en est-il de try-catch (ou try-catch-finally)?

private void test_click(object sender, EventArgs e) 
{ 
    MessageBox.Show("hi"); 
    try 
    { 
    //if it works ok without a error it continues to 
    MessageBox.Show("worked ok"); 
    } 
    catch(Exception) 
    { 
    //if it encountered a error of some kind it would go to 
    MessageBox.Show("DID NOT WORK OK"); 
    } 
} 

Attention: Ici, j'utiliser un catch(Exception) global qui doit être utilisé avec soin, seulement! Pour une méthode de test, ce n'est pas un problème, mais ne le faites pas dans le code de production. Vous devriez au moins spécifier l'exception prévue et réfléchir à la manière de gérer la situation.

+1

+1. J'ai posté presque exactement la même réponse que vous (mais j'étais plus lent :) ** Note: ** Vous pouvez simplifier 'catch (Exception)' simplement 'catch'. Cela dit, je suis d'accord que dans la plupart des cas, ce n'est pas une bonne idée. Le code doit uniquement capturer les exceptions qu'il sait gérer; toutes les autres exceptions (c.-à-d. la majorité) ne devraient pas être interceptées, ou du moins elles devraient être relancées en utilisant 'throw; – stakx

+0

+1 pour fournir une réponse utile à une mauvaise question! –

+0

a fonctionné comme un PRO – NightsEVil

1

Je suggère enregistrer des informations pops plutôt que des messages.

0

vous pouvez utiliser try catch.

0

Lorsque vous dites que cela ne fonctionne pas, voulez-vous dire qu'il déclenche une exception, ou qu'il échoue silencieusement sans aucune explication?

Si elle lève une exception, vous devez utiliser quelque chose comme

private void test_click(object sender, EventArgs e) 
{ 
    try 
    { 
     MessageBox.Show("hi"); 
     MessageBox.Show("worked ok"); 
    } 
    catch(WheteverExceptionType ex) 
    { 
     MessageBox.Show("DID NOT WORK OK"); 
     // you can also access the properties of the thrown exception "ex" here... 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

Je comprends ce que vous essayez de montrer avec ce peu de code (comme c'est le moment de l'écriture), mais notez que 'MessageBox.Show()' sera très probablement * jamais * jeter tout exception. Ainsi, dans ce cas, un bloc catch est un temps perdu. Vous auriez besoin de faire autre chose que d'afficher des boîtes de message. – stakx

+0

absolument d'accord. A partir du code affiché par l'OP, j'ai supposé qu'il essayait de faire quelque chose de non trivial, mais plutôt que de publier les détails, il avait posté le code MessageBox.Show() à sa place. Toutes mes excuses à l'OP si cette hypothèse était fausse. :) – ZombieSheep

0

essentiellement:

try { 
    MessageBox.Show("hi"); 
    DoSomethingThatMightFail(); 
    MessageBox.Show("worked ok"); 
} catch (DoSomethingFailedException e) { 
    MessageBox.Show("Something did not work: " + e.Message); 
} 
Questions connexes