Ich versuche, eine Ausnahme durch eine Methode (GetMoreCodes
) ausgelöst durch eine Task
ausgelöst, aber beim Debuggen der Ausnahme wird nie behandelt und der catch-Block wird nie getroffen. Versuchte verschiedene Techniken (insbesondere mit/ohne warten). Dieser Code befindet sich in einem (async
) Schaltflächenereignishandler.Ausnahme nicht in Task.Run
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);
}
Das sieht für mich wie die meisten Beispiele, die ich hier gesehen und in Blogs, insbesondere in diesem (http://blog.stephencleary.com/ - großen Dank @ stephen-cleary).
Momentan möchte ich nur, dass die Anwendung nicht abstürzt und einen Fehler protokolliert, falls vorhanden. Fehle ich etwas?
Was passiert, wenn Sie einen Haltepunkt setzen und ihn durchlaufen? –
Der Task verfügt über Eigenschaften, um die Ausnahme zu erhalten, die innerhalb des Objekts aufgetreten ist. Um die Ausnahmebedingung zu überprüfen, können Sie einfach etwas wie 'Task t = Task.Run (() => {neue Exception auslösen ("test!");}); while (! t.IsCompleted) Application.DoEvents(); t.Exception; ' –
Versuchen Sie diesen Link. Ich denke, es könnte sein, was Sie suchen http://stackoverflow.com/questions/14990998/how-to-handle-exceptions-in-tasks-with-debugger – sheavens