我试图捕获由GetMoreCodes
运行的方法(Task
)抛出的异常,但是在调试时永远不会处理异常,并且永远不会触发catch块。尝试了不同的技术(特别是有/无等待)。此代码位于(async
)按钮事件处理程序中。
try
{
// Task.Run(() => GetMoreCodes(CodeBufferMaxSize));
// await Task.Run(() => GetMoreCodes(0));
await Task.Run(() => { throw new Exception("test!"); });
}
catch (Exception ex)
{
Console.WriteLine("Exception caught: " + ex);
}
这就像我在这里和博客中看到的大多数例子一样,特别是在这个例子中(http://blog.stephencleary.com/ - 非常感谢@ stephen-cleary)。
现在,我只希望应用程序不会崩溃并记录错误(如果有的话)。 我错过了什么吗?
答案 0 :(得分:-1)
await Task.Run(() => {
try
{
throw new Exception("test!");
}
catch (Exception ex)
{
Console.WriteLine("Catched");
}
});
为什么不抓住Task.Run()
?
如果你想用你的代码在Console.Application中捕获它,你可以这样做。但是t.Wait()阻止了UI线程并等待任务完成。
public static void Main(string[] args)
{
try
{
Task t = TestError();
t.Wait();
}
catch (Exception ex)
{
Console.WriteLine("Catched");
}
Console.ReadLine();
}
public static async Task TestError()
{
// Task.Run(() => GetMoreCodes(CodeBufferMaxSize));
// await Task.Run(() => GetMoreCodes(0));
await Task.Run(() => { throw new Exception("test!"); });
}