如果没有错误contiune ..如果错误问题其他
嗨,我有一个问题,我有一些代码,如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");
}
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。我发布了几乎完全相同的答案(但是我的速度更慢)。**注意:**您可以将catch(Exception)简化为'catch'。这就是说,我同意在大多数情况下,这不是一个好主意。代码只能捕获它知道如何处理的异常;所有其他异常(即大多数)不应被捕获,或者至少应该使用'throw;'重新抛出。 – stakx 2010-06-11 08:37:38
+1为一个糟糕的问题提供有用的答案! – 2010-06-11 09:19:12
就像一个PRO工作 – NightsEVil 2010-06-12 21:59:24
我会建议日志信息,而不是弹出消息。
你可以使用try catch。
当你说它不起作用时,你的意思是它会抛出一个异常,或者它只是在没有任何解释的情况下默默地失败?
如果它抛出一个异常,你应该使用类似
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);
}
}
我明白你想要显示这一点的代码(因为它是在写这篇文章的时候),但请注意'MessageBox.Show()'最有可能*永远不会抛出任何例外。因此,在这种情况下,'catch'块被浪费了时间。除了显示消息框外,您还需要做其他事情。 – stakx 2010-06-11 08:44:40
绝对同意。从OP发布的代码中,我认为他正在尝试做一些不重要的事情,而不是发布他将MessageBox.Show()代码放在其位置的细节。如果这个假设扭曲,向OP表示歉意。 :) – ZombieSheep 2010-06-11 08:53:57
本质:
try {
MessageBox.Show("hi");
DoSomethingThatMightFail();
MessageBox.Show("worked ok");
} catch (DoSomethingFailedException e) {
MessageBox.Show("Something did not work: " + e.Message);
}
好的,但是你需要什么帮助? – nos 2010-06-11 08:30:26
你可以在这个问题上更精确吗? – Chinjoo 2010-06-11 08:31:14
70%?不错! – anthony 2010-06-11 08:31:17