我是C# 中的async
andawait
关键字的新手,我使用的是 C# 6.0。我的代码有什么问题?DivideByZeroException 不会在catch
块中捕获。我读到在 C# 5 和更新版本中,可以使用await
由try-catch
块包围的关键字轻松处理异常。
private async void button1_Click(object sender, EventArgs e)
{
try
{
Console.WriteLine("in try");
int result = await f(0);
textBox1.Text = result.ToString();
}
catch (Exception)
{
Console.WriteLine("in catch");
}
finally
{
Console.WriteLine("in finally");
}
}
Task<int> f(int x)
{
return Task<int>.Factory.StartNew(() =>
{
return 10 / x;
});
}
它正在发布,但由于这是WebForms
/WPF
或WinForms
应用程序,它没有控制台,因此Console.WriteLine
从不打印任何内容。代替:
Console.WriteLine("in catch");
和
textBox1.Text = "in catch";
这将起作用:
try
{
textBox1.Text += "in try";
int result = await f(0);
textBox1.Text = result.ToString();
}
catch (Exception)
{
textBox1.Text += "in catch";
}
finally
{
textBox1.Text += "in finally";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句