Jestem nowym do C# i znajdę wyjątki nieco mylące ... Mam aplikację z następującego kodu:TimeoutException, TaskCanceledException C#
try
{
//do something
}
catch (TimeoutException t)
{
Console.WriteLine(t);
}
catch (TaskCanceledException tc)
{
Console.WriteLine(tc);
}
catch (Exception e)
{
Console.WriteLine(e);
}
Kiedy debugowania kodu, to rzuca e Exception
, najbardziej ogólny i po najechaniu na informację o wyjątku okazuje się, że jest to TaskCanceledException
. Dlaczego nie zostało złapane TaskCanceledException
? Jeśli wyjątek byłby TimeoutException
, czy złapałby on TimeoutException
, czy też złapałby Exception
? Dlaczego?
Czy jesteś pewien, że nie jest to 'AggregationException' wyrzucony z' obiektu Task'? pokaż nam wywołanie rzucania –
... tak, jest to wyjątek System.AggregateException i InnerException jest wyjątkiem System.Threading.Task.TaskCanceledException. – Marta