我是TPL的新手。 我需要在SendEmailAlert()方法抛出任何错误时处理异常。请注意以下代码是否正确?
public Task MyMethod()
{
DoSomething();
try
{
string emailBody = "TestBody";
string emailSubject = "TestSubject";
Task.Run(()=> SendEmailAlert(arrEmailInfo));
}
catch (AggregateException ex)
{
ex.Handle((e) =>
{
log.Error("Error occured while sending email...", e);
return true;
}
);
}
}
private void SendEmailAlert(string[] arrEmailInfo)
{
MyClassX.SendAlert(arrEmailnfo[0], arrEmailnfo[1]);
}
我在SendEmailAlert()方法中强制出错。但是异常没有被捕获。有人可以建议吗?
感谢。
答案 0 :(得分:1)
你的Task.Run
在不同的上下文中运行(你需要在其中使用try / catch;或者检查任务是否完成)。您可以更改为使用async / await。
示例:
public async void MyMethod()
{
try
{
await ExceptionMethod();
}
catch (Exception ex)
{
// got it
}
}
public async Task ExceptionMethod()
{
throw new Exception();
}