2010-06-11 73 views
-4

嗨,我有一个问题,我有一些代码,如70%的计算机上使用它的作品很好,但..由于某些原因theres几个讨厌和编号喜欢做这样的事情(请记住这是一个假设)如果没有错误contiune ..如果错误问题其他

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

好的,但是你需要什么帮助? – nos 2010-06-11 08:30:26

+0

你可以在这个问题上更精确吗? – Chinjoo 2010-06-11 08:31:14

+2

70%?不错! – anthony 2010-06-11 08:31:17

回答

4

try-catch(或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"); 
    } 
} 

注意:这里我用一个全球catch(Exception)应小心使用,只有!对于测试方法,这不是问题,但不要在生产代码中执行此操作。你至少应该在那里指定预期的例外,并考虑如何处理这种情况。

+1

+1。我发布了几乎完全相同的答案(但是我的速度更慢)。**注意:**您可以将catch(Exception)简化为'catch'。这就是说,我同意在大多数情况下,这不是一个好主意。代码只能捕获它知道如何处理的异常;所有其他异常(即大多数)不应被捕获,或者至少应该使用'throw;'重新抛出。 – stakx 2010-06-11 08:37:38

+0

+1为一个糟糕的问题提供有用的答案! – 2010-06-11 09:19:12

+0

就像一个PRO工作 – NightsEVil 2010-06-12 21:59:24

1

我会建议日志信息,而不是弹出消息。

0

你可以使用try catch。

0

当你说它不起作用时,你的意思是它会抛出一个异常,或者它只是在没有任何解释的情况下默默地失败?

如果它抛出一个异常,你应该使用类似

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

我明白你想要显示这一点的代码(因为它是在写这篇文章的时候),但请注意'MessageBox.Show()'最有可能*永远不会抛出任何例外。因此,在这种情况下,'catch'块被浪费了时间。除了显示消息框外,您还需要做其他事情。 – stakx 2010-06-11 08:44:40

+0

绝对同意。从OP发布的代码中,我认为他正在尝试做一些不重要的事情,而不是发布他将MessageBox.Show()代码放在其位置的细节。如果这个假设扭曲,向OP表示歉意。 :) – ZombieSheep 2010-06-11 08:53:57

0

本质:

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