我有一个自定义异常InsertLeadException,它从Exception继承。现在,我的代码如下:
....
try
{
isSuccess = _proxy.SendAsync(message).NoState();
}
catch (InsertLeadException ex)
{
...
}
catch (Exception ex)
{
...
}
....
这是代理中的SendAsync:
public async Task<bool> SendAsync(Message message)
{
List<Task<bool>> tasks = new List<Task<bool>>();
var task = ProcessMessageAsync(message);
tasks.Add(task);
var legacyTask = LogLeadAsync();
tasks.Add(legacyTask);
Task.WaitAll(tasks.ToArray());
return task.Result; // only need return result of 1st task
}
在ProcessMessageAsync中,我只是做
throw new InsertLeadException("Test Exception.");
在LogLeadAsync中,也没有例外。
由于某些原因,运行代码时,它不会捕获InsertLeadException,而是会捕获Exception。
但是,如果我像下面那样实现,它确实会捕获InsertLeadException:
public async Task<bool> SendAsync(Message message)
{
var task = await ProcessMessageAsync(message).NoState();
var legacyTask = await LogLeadAsync().NoState();
return task;
}
有人知道为什么吗?
谢谢