Przechwytywanie wyjątków z wątków/tasków

0

Witam

Próbuję wykonać taki oto fragment kodu:

 
 var task1 = Task.Factory.StartNew(() =>
            {

                for (int i = 0; i < 100; i++)
                {
                    if (i == 20)
                        throw new Exception("throwing unhandled exception");
                }

            }
                  );

            try
            {
                task1.Wait();
            }
            catch (AggregateException ex)
            {
                foreach (Exception innerEx in ex.InnerExceptions)
                    Console.WriteLine(innerEx.Message);

            }

Nie wiem czy dobrze rozumie, ale ma nastąpić agregacja wyjątków w jednym miejscu a następnie wypisanie ich do konsoli. Nie wiem dlaczego zamiast do konsoli wyjątek wyrzucany jest w visualu.

1
usm_auriga napisał(a):

Nie wiem dlaczego zamiast do konsoli wyjątek wyrzucany jest w visualu.

Bo używasz debugera?

0

Hmm no faktycznie, ale dlaczego pisze Exception was unhandled by user code jak przecież niby jest obsługa, przynajmniej taka teoretycznie.

2

Bo debugger jest czuły, i zatrzymuje już na pierwszym throw, nie czekając aż wyjątek będzie opakowany w AggregateException.
A wewnątrz lambdy nie masz trykacza.

0

Rozumiem, dziękuje za wyjaśnienie. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1