I am using async
await
as well as Task.Factory.StartNew
in my application but one thing that i noticed changed is that visual studio is no more breaking when an unhandled exception occured
Here is what i mean by before using await
but after i turn a method into a Task
and use await
It is only captured in the output area in visual studio...
BTW : It is very strange for me as i am new to .Net4.5 please excuse me if failed to illustrate what i need specifically but again what i want to know is
When the debugger says "Exception was unhandled by user code", what it means is that an exception has propagated up to the framework. Since an async Task
method places its exceptions on its returned Task
, the exception does not propagate to the framework. An exception like this is unobserved.
If you want the debugger to break when exceptions are thrown, then use Debugger -> Exceptions -> Check the "Thrown" box for CLR Exceptions.
If you want to observe the exception, then change from TaskFactory.StartNew
to Task.Run
and call Wait
on the returned Task
. This will propagate the exception (wrapped in an AggregateException
) through Main
and up to the framework.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With